گاهی اوقات نمی خواهید که تصویری به طور ناگهانی روی صفحه ظاهر شود، بلکه ترجیح می دهید به مرور و به صورت پخش اسلایدی ، تصاویر را به کار بگیرید. این عمل در اندروید توسط ImageSwitcher ( سویچر تصویر اندروید ) پشتیبانی می شود.

سویچر تصویر اندروید به شما اجازه می دهد تا روی نحوه ظاهر شدن تصاویر در صفحه ، تغییراتی اعمال کنید. برای استفاده از سویچر تصویر (image switcher) ، ابتدا باید مولفه xml آن را تعریف کنید که سینتکس آن را در زیر مشاهده می کنید :

 

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

 

اکنون ما در فایل جاوا یک نمونه ImageSwithcer ایجاد نموده و یک reference از مولفه ی XML آن به دست می آوریم. سینتکس آن را در زیر مشاهده می کنید :

 

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

 

کار دیگری که انجام می دهید اجرای اینترفیس ViewFactory و اجرای متد اجرا نشده ای می باشد که یک imageView را گزارش می دهد.
سینتکس آن مانند زیر است :

 

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

 

و در انتها لازم است که Animation را به ImageSwithcer اضافه کنید. باید آبجکتی از کلاس Animation را از طریق کلاس AnimationUtilities و با فراخوانی متد استاتیک loadAnimation تعریف کنید،
که سینتکس آن را در زیر مشاهده می کنید :

 

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

 

متد setInAnimaton شیوه ظاهرشدن آبجکت انیمیشن روی صفحه را تنظیم می کند، در حالی که setOutAnimation عمل عکس آن را انجام می دهد. متد ()loadAnimation یک آبجکت انیمیشن ایجاد می کند.

علاوه بر این متد ها، متد های  کاربردی دیگری نیز در ImageSwitcher وجود دارند که در لیست زیر مشاهده می کنید:

شماره متد و توضیحات
1 (setImageDrawable(Drawable drawable

یک تصویر را با سوییچر تصویر (image switcher) تنظیم می کند. تصویر به فرم bitmap منتقل می شود.

2 (setImageResource(int resid

یک تصویر را با سویچر تصویر (image switcher) تنظیم می کند. تصویر به فرم یک id عددی منتقل می شود.

3 (setImageURI(Uri uri

یک تصویر را با سویچر تصویر (image switcher) تنظیم می کند. تصویر به فرم URI منتقل می شود.

4 (ImageSwitcher(Context context, AttributeSet attrs

یک آبجکت image switcher را با تنظیم چند ویژگی تصویب شده در متد ، باز می گرداند (Return می کند) .

5 (onInitializeAccessibilityEvent (AccessibilityEvent event

یک AccessibilityEvent را با اطلاعاتی در مورد این ویو که منبع رویداد (event source) می باشد، مقدار دهی اولیه می کند.

6 (onInitializeAccessibilityNodeInfo (AccessibilityNodeInfo info

یک AccessibilityNodeInfo را با اطلاعاتی در مورد این ویو مقدار دهی اولیه می کند.

 

مثال

مثال زیر تاثیرات image switcher را روی bitmap به نمایش می گذارد . این مثال basic application ایجاد می کند که به ما اجازه می دهد تا تاثیرات انیمیشن را روی تصاویر ببینیم.

برای انجام این مثال به یک دستگاه واقعی نیاز است.

مرحله  توضیحات
1 برای ایجاد یک برنامه ی اندروید از Android studio IDE  تحت پکیج com.example.imageswitcher. استفاده می کنیم .
2 فایل src/MainActivity.java را برای افزودن کد لازم تغییر می دهیم.
3 res/layout/activity_main رابرای افزودن مولفه های XML مربوطه تغییر می دهیم.
4 اکنون برنامه را اجرا کنید، یک دستگاه اجرایی اندروید انتخاب کنید و برنامه را روی آن نصب کرده و نتایج را بررسی کنید.

محتوای تغییر یافته ی src/MainActivity.java :

 

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);
         }
      });
   }
}

 

محتوای تغییر یافته ی 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>

 

محتوای فایل Strings.xml:

 

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

 

محتوای فایل AndroidManifest.xml :

 

<?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>

 

حالا می خواهیم اپلیکیشن را اجرا کنیم. فرض می کنیم که در هنگام انجام تنظیمات محیط، AVD خود را ایجاد کرده اید. برای اجرای برنامه از Android studio ، یکی از فایل های اکتیویتی پروژه را باز کنید و روی آیکون RunEclipse Run Icon از نوار ابزار کلیک کنید. Android studio برنامه را روی AVD شما نصب و آغاز می کند و اگر همه چیز در مورد برنامه و تنظیمات درست باشد، پنجره ی Emulator زیر نمایش داده خواهد شد.

Android Image Switcher Tutorial

اگر به صفحه ی دستگاه خود نگاه کنید، دو دکمه خواهید دید.

اکنون دکمه ی بالایی را با فلش به سمت راست انتخاب می کنیم .یک تصویر از سمت راست ظاهر می شود که به سمت چپ حرکت می کند، که در تصویر زیر مشاهده می کنید.

Android Image Switcher Tutorial

اکنون روی دکمه ی پایینی ضربه بزنید که تصویر قبل را با کمی تغییر برمی گرداند، که در تصویر زیر می توانید ببینید.

Android Image Switcher Tutorial