17 Jul 2012

ImageSwitcher in Android.



main.xml


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <ImageSwitcher
        android:id="@+id/imgswitcher"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true" />

    <Gallery
        android:id="@+id/galleryview"
        android:layout_width="fill_parent"
        android:layout_height="60dip"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:background="#55000000"
        android:gravity="center_vertical"
        android:spacing="16dip" />

</RelativeLayout>


Create ImageAdapter.class



import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;

public class ImageAdapter extends BaseAdapter {

      private Context context;
      public static Integer[] imageIDs={
            R.drawable.a01,R.drawable.a02,
            R.drawable.a03,R.drawable.a04,
            R.drawable.a05,R.drawable.a06,
            R.drawable.a07,R.drawable.a08,
            R.drawable.a09,R.drawable.a010,
            R.drawable.a011,R.drawable.a012,
            R.drawable.a013
      };
      public ImageAdapter(Context context){
            this.context=context;
      }
      @Override
      public int getCount() {
            // TODO Auto-generated method stub
            return imageIDs.length;
      }

      @Override
      public Object getItem(int position) {
            // TODO Auto-generated method stub
            return position;
      }

      @Override
      public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
      }

      @Override
      public View getView(int position, View
                  convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            ImageView image=new ImageView(context);
            image.setImageResource(imageIDs[position]);
            image.setAdjustViewBounds(true);
            image.setLayoutParams(new Gallery.LayoutParams(120,120));
            image.setScaleType(ImageView.ScaleType.FIT_CENTER);
            return image;
      }

}



ImageSwitcherExampleActivity


import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.Gallery;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ViewSwitcher.ViewFactory;

public class ImageSwitcherExampleActivity extends Activity implements ViewFactory,OnItemSelectedListener
{
      private ImageSwitcher mSwitcher;
      private Gallery mGallery;
      private int selectedTag = 0;
      private int upX, downX;


      @Override
      public void onCreate(Bundle savedInstanceState)
      {
            super.onCreate(savedInstanceState);
            //Remove title bar
            this.requestWindowFeature(Window.FEATURE_NO_TITLE);
            //Remove notification bar
            this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);

            setContentView(R.layout.main);
            setTitle("ImageSwitcher Example");

            mSwitcher = (ImageSwitcher) findViewById(R.id.imgswitcher);
            mSwitcher.setFactory(ImageSwitcherExampleActivity.this);
            mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in));
            mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));

            mSwitcher.setOnTouchListener(touchlistener);
            mGallery = (Gallery) findViewById(R.id.galleryview);
            mGallery.setAdapter(new ImageAdapter(ImageSwitcherExampleActivity.this));
            mGallery.setOnItemSelectedListener(this);

      }

      OnTouchListener touchlistener = new OnTouchListener()
      {

            @Override
            public boolean onTouch(View v, MotionEvent event)
            {
                  // TODO Auto-generated method stub
                  if(event.getAction()==MotionEvent.ACTION_DOWN)
                  {
                        downX=(int)event.getX();//Get Pressed Coordinates x
                        return true;
                  }
                  else
                  {
                        if(event.getAction()==MotionEvent.ACTION_UP)
                        {
                              upX=(int)event.getX();//get Released Coordinates x
                              if(upX-downX>100)
                              { //From left to right drag
                                    //if this is first drag to to tail

                                    if(mGallery.getSelectedItemPosition()==0)
                                    {
                                          selectedTag=mGallery.getCount()-1;
                                    }
                                    else
                                    {
                                          selectedTag=mGallery.getSelectedItemPosition()-1;
                                    }
                              }
                              else{
                                    if(downX-upX>100){ //From right to left drag
                                          if (mGallery.getSelectedItemPosition() == (mGallery
                                                      .getCount() - 1))
                                                selectedTag = 0;
                                          else
                                                selectedTag = mGallery.getSelectedItemPosition() + 1;
                                    }
                              }
                              return true;
                        }
                  }
                  return false;
            }

      };
      @Override
      public View makeView()
      {
            // TODO Auto-generated method stub
            ImageView iv=new ImageView(this);
            iv.setBackgroundColor(0xFF000000);
            iv.setScaleType(ImageView.ScaleType.FIT_CENTER);
            iv.setLayoutParams(new ImageSwitcher.LayoutParams(
                        LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
            return iv;
      }

      @Override
      public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
                  long arg3)
      {
            // TODO Auto-generated method stub
            mSwitcher.setImageResource(ImageAdapter.imageIDs[arg2]);
            selectedTag = arg2;
      }

      @Override
      public void onNothingSelected(AdapterView<?> arg0)
      {
            // TODO Auto-generated method stub

      }
}

Download sample code from here: ImageSwitcher

I will be happy if you will provide your feedback or follow this blog. Any suggestion and help will be appreciated.

Thank you :)



4 comments: