Android - Görüntü Değiştirici

Bazen bir görüntünün ekranda aniden görünmesini istemezsiniz, bunun yerine bir görüntüden diğerine geçiş yaparken görüntüye bir tür animasyon uygulamak istersiniz. Bu, ImageSwitcher biçiminde android tarafından desteklenmektedir.

Bir görüntü değiştirici, ekranda göründükleri şekilde görüntülere bazı geçişler eklemenize olanak tanır. Görüntü Değiştiriciyi kullanmak için önce XML bileşenini tanımlamanız gerekir. Söz dizimi aşağıda verilmiştir -

<ImageSwitcher
   android:id="@+id/imageSwitcher1"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerHorizontal="true"
   android:layout_centerVertical="true" >
</ImageSwitcher>

Şimdi java dosyasında bir ImageSwithcer inansı oluşturuyoruz ve bu XML bileşeninin bir referansını alıyoruz. Söz dizimi aşağıda verilmiştir -

private ImageSwitcher imageSwitcher;
imageSwitcher = (ImageSwitcher)findViewById(R.id.imageSwitcher1);

Yapmamız gereken sonraki şey, ViewFactory arayüzünü ve bir imageView döndüren uygulanmamış yöntemi uygulamamızdır. Sözdizimi aşağıda -

imageSwitcher.setImageResource(R.drawable.ic_launcher);
imageSwitcher.setFactory(new ViewFactory() {
   public View makeView() {
      ImageView myView = new ImageView(getApplicationContext());
      return myView;
   }
}

Yapmanız gereken son şey, ImageSwitcher'a Animasyon eklemektir. Statik bir loadAnimation yöntemi çağırarak AnimationUtilities sınıfı aracılığıyla Animation sınıfının bir nesnesini tanımlamanız gerekir. Söz dizimi aşağıda verilmiştir -

Animation in = AnimationUtils.loadAnimation(this,android.R.anim.slide_in_left);
imageSwitcher.setInAnimation(in);
imageSwitcher.setOutAnimation(out);

SetInAnimaton yöntemi, nesnenin ekrandaki görünümünün animasyonunu ayarlarken setOutAnimation bunun tersini yapar. LoadAnimation () yöntemi bir animasyon nesnesi oluşturur.

Bu yöntemlerin dışında, ImageSwitcher sınıfında tanımlanan başka yöntemler de vardır. Aşağıda tanımlanmıştır -

Sr.No Yöntem ve açıklama
1

setImageDrawable(Drawable drawable)

Görüntü değiştiricili bir görüntü ayarlar. Görüntü bitmap biçiminde aktarılır

2

setImageResource(int resid)

Görüntü değiştiricili bir görüntü ayarlar. Görüntü tamsayı kimliği şeklinde aktarılır

3

setImageURI(Uri uri)

Görüntü değiştiricili bir görüntü ayarlar. Görüntü URI biçiminde aktarılır

4

ImageSwitcher(Context context, AttributeSet attrs)

Yöntemde geçirilen bazı öznitelikleri zaten ayarlayan bir görüntü değiştirici nesnesi döndürür

5

onInitializeAccessibilityEvent (AccessibilityEvent event)

Olay kaynağı olan bu Görünüm hakkındaki bilgilerle bir AccessibilityEvent'i başlatır

6

onInitializeAccessibilityNodeInfo (AccessibilityNodeInfo info)

Bu görünümle ilgili bilgilerle bir AccessibilityNodeInfo başlatır

Misal

Aşağıdaki örnek, bitmap üzerindeki bazı görüntü değiştirici efektlerini göstermektedir. Görüntüler üzerindeki animasyon efektlerini görüntülemenizi sağlayan temel bir uygulama oluşturur.

Bu örneği denemek için, bunu gerçek bir cihazda çalıştırmanız gerekir.

Adımlar Açıklama
1 Com.example.sairamkrishna.myapplication paketinin altında bir Android uygulaması oluşturmak için Android studio IDE'yi kullanacaksınız.
2 Gerekli kodu eklemek için src / MainActivity.java dosyasını değiştirin.
3 İlgili XML bileşenlerini eklemek için res / layout / activity_main'i değiştirin
4 Uygulamayı çalıştırın ve çalışan bir android cihaz seçin ve üzerine uygulamayı yükleyin ve sonuçları doğrulayın

Aşağıda, değiştirilen ana aktivite dosyasının içeriği yer almaktadır src/MainActivity.java.

Aşağıdaki kodda tp ve abc tutorialspoint.com logosunu gösterir
package com.example.sairamkrishna.myapplication;

import android.app.Activity;
import android.app.ActionBar.LayoutParams;
import android.os.Bundle;
import android.view.View;

import android.widget.Button;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.ViewSwitcher.ViewFactory;

public class MainActivity extends Activity {
   private ImageSwitcher sw;
   private Button b1,b2;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      b1 = (Button) findViewById(R.id.button);
      b2 = (Button) findViewById(R.id.button2);

      sw = (ImageSwitcher) findViewById(R.id.imageSwitcher);
      sw.setFactory(new ViewFactory() {
         @Override
         public View makeView() {
            ImageView myView = new ImageView(getApplicationContext());
            myView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            myView.setLayoutParams(new 
               ImageSwitcher.LayoutParams(LayoutParams.WRAP_CONTENT,
                  LayoutParams.WRAP_CONTENT));
            return myView;
         }
      });

      b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "previous Image",
               Toast.LENGTH_LONG).show();
            sw.setImageResource(R.drawable.abc);
         }
      });

      b2.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            Toast.makeText(getApplicationContext(), "Next Image",
               Toast.LENGTH_LONG).show();
            sw.setImageResource(R.drawable.tp);
         }
      });
   }
}

Xml'nin değiştirilmiş içeriği aşağıdadır res/layout/activity_main.xml.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
   xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" 
   android:layout_width="match_parent"
   android:layout_height="match_parent" 
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" 
   tools:context=".MainActivity">
      
   <TextView android:text="Gestures  Example" 
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/textview"
      android:textSize="35dp"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:id="@+id/textView"
      android:layout_below="@+id/textview"
      android:layout_centerHorizontal="true"
      android:textColor="#ff7aff24"
      android:textSize="35dp" />
      
   <ImageSwitcher
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageSwitcher"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="168dp" />
      
   <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/left"
        android:id="@+id/button"
        android:layout_below="@+id/textView"
        android:layout_centerHorizontal="true" />

   <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/right"
        android:id="@+id/button2"
        android:layout_alignParentBottom="true"
        android:layout_alignLeft="@+id/button"
        android:layout_alignStart="@+id/button" />
      
</RelativeLayout>

Aşağıdakilerin içeriği Strings.xml dosya.

<resources>
    <string name="app_name">My Application</string>
    <string name="left"><![CDATA[<]]></string>
    <string name="right"><![CDATA[>]]></string>
</resources>

Aşağıdakilerin içeriği AndroidManifest.xml dosya.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication"

   <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name="com.example.sairamkrishna.myapplication.MainActivity"
         android:label="@string/app_name" >
         
         <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
         </intent-filter>
         
      </activity>
      
   </application>
</manifest>

Şimdi değiştirdiğimiz uygulamanızı çalıştırmayı deneyelim. Senin yarattığını varsayıyorumAVDortam kurulumu yapılırken. Uygulamayı Android stüdyosundan çalıştırmak için, projenizin etkinlik dosyalarından birini açın

ve araç çubuğundan Çalıştır simgesine tıklayın . Android stüdyo, uygulamayı AVD'nize yükler ve başlatır ve kurulumunuz ve uygulamanızla ilgili her şey yolundaysa, aşağıdaki Emulator penceresini görüntüler -

Şimdi cihazınızın ekranına bakarsanız, iki düğmeyi göreceksiniz.

Şimdi sadece sağ oktaki üst düğmeyi seçin. Sağdan bir görüntü belirecek ve sola doğru hareket edecektir. Aşağıda gösterilmiştir -

Şimdi, önceki görüntüyü bir miktar geçişle geri getirecek aşağıdaki düğmeye dokunun. Aşağıda gösterilmiştir -