Image Switcher Android

The feature to facilitate an animation over images to transition from one image to another is provided by the image switcher in Android. The ImageSwitcher component needs to be implemented in the XML file, to use the image switcher. To provide an implementation of the ViewFactory interface, the setFactory() method of ImageSwitcher is used. Its unimplemented method is implemented by the ViewFactory interface which returns an ImageView.

Example of Image Switcher:

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"
   tools:context=".MainActivity">
 
   <TextView android:text="HELLO WORLD!!"
       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="Switch the Images"
       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>

Activity class: (File: MainActivity.java)

package com.example.radioapp;
 
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.php);
           }
       });
 
       b2.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               Toast.makeText(getApplicationContext(), "Next Image",
                       Toast.LENGTH_LONG).show();
               sw.setImageResource(R.drawable.java);
           }
       });
   }
}

File: AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.radioapp">
 
   <application
       android:allowBackup="true"
       android:label="@string/app_name"
        >
       <activity
           android:name="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>

File: Strings.xml:

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

Output 1:

Output 2: