Android 中的ImageSwitcher 和Gallery结合使用


(1)gallery 即绑定一个adapter 即可。

(2)Activity 实现ViewFactory。并实现其中的构造方法

makeView();。这个方法主要是返回一个view对象。并为switcher设置imageSwitcher.setFactory(this);--这个Factory 是用来切换ImageSwitcher的view的。

实现OnItemSelectedListener为gallery重写

onNothingSelected();

onItemSelected();

  1. package com.bsn.cc;  
  2.   
  3.   
  4.   
  5.   
  6. import Android.app.Activity;  
  7. import android.content.Context;  
  8. import android.content.res.TypedArray;  
  9. import android.os.Bundle;  
  10. import android.view.View;  
  11. import android.view.ViewGroup;  
  12. import android.view.animation.AnimationUtils;  
  13. import android.widget.AdapterView;  
  14. import android.widget.AdapterView.OnItemClickListener;  
  15. import android.widget.AdapterView.OnItemSelectedListener;  
  16. import android.widget.Gallery.LayoutParams;  
  17. import android.widget.BaseAdapter;  
  18. import android.widget.Gallery;  
  19. import android.widget.ImageSwitcher;  
  20. import android.widget.ImageView;  
  21. import android.widget.ViewSwitcher.ViewFactory;  
  22.   
  23. public class ImageSwitcherActivity extends Activity implements OnItemSelectedListener,ViewFactory{  
  24.     private Gallery gallery;  
  25.     private ImageSwitcher imageSwitcher;  
  26.     private ImageAdapter imageAdapter;  
  27.     private int []resId={  
  28.             R.drawable.item1, R.drawable.item2, R.drawable.item3, R.drawable.item4,  
  29.             R.drawable.item5, R.drawable.item6, R.drawable.item7,  
  30.             R.drawable.item8, R.drawable.item9, R.drawable.item10,  
  31.             R.drawable.item11, R.drawable.item12, R.drawable.item13,  
  32.             R.drawable.item14, R.drawable.item15   
  33.     };  
  34.     @Override  
  35.     public void onCreate(Bundle savedInstanceState) {  
  36.         super.onCreate(savedInstanceState);  
  37.         setContentView(R.layout.main);  
  38.           
  39.         gallery = (Gallery) findViewById(R.id.dddd);  
  40.         imageAdapter = new ImageAdapter(this);  
  41.         gallery.setAdapter(imageAdapter);  
  42.         gallery.setOnItemSelectedListener(this);  
  43.         imageSwitcher = (ImageSwitcher) findViewById(R.id.imageswitcher);  
  44.         imageSwitcher.setFactory(this);  
  45.   
  46.         imageSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,  
  47.                 android.R.anim.fade_in));  
  48.         imageSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,  
  49.                 android.R.anim.fade_out));  
  50.     }  
  51.     private class ImageAdapter extends BaseAdapter{  
  52.         int mGalleryItemBackground;  
  53.         private Context mContext;  
  54.         public ImageAdapter(Context context)  
  55.         {  
  56.             mContext = context;  
  57.             // 这里为自定义属性R.styleable.Gallery ..中的属性定义的是gallery的默认边框   
  58.             TypedArray typedArray = obtainStyledAttributes(R.styleable.Gallery);  
  59.             mGalleryItemBackground = typedArray.getResourceId(  
  60.                     R.styleable.Gallery_android_galleryItemBackground, 0);                        
  61.         }  
  62.         @Override  
  63.         public int getCount() {  
  64.             return Integer.MAX_VALUE;  
  65.         }  
  66.         @Override  
  67.         public Object getItem(int arg0) {  
  68.             // TODO Auto-generated method stub   
  69.             return arg0;  
  70.         }  
  71.         @Override  
  72.         public long getItemId(int position) {  
  73.             // TODO Auto-generated method stub   
  74.             return position;  
  75.         }  
  76.         @Override  
  77.         public View getView(int position, View convertView, ViewGroup parent) {  
  78.             ImageView imageView=new ImageView(mContext);  
  79.             imageView.setImageResource(resId[position]);  
  80.             imageView.setScaleType(ImageView.ScaleType.FIT_XY);  
  81.             imageView.setLayoutParams(new Gallery.LayoutParams(136,88));  
  82.             imageView.setBackgroundResource(mGalleryItemBackground);  
  83.             return imageView;  
  84.         }  
  85.     }  
  86.     @Override  
  87.     public View makeView() {  
  88.           
  89.         ImageView imageView = new ImageView(this);  
  90.         imageView.setBackgroundColor(0xFF000000);  
  91.         imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);  
  92.         imageView.setLayoutParams(new ImageSwitcher.LayoutParams(  
  93.                 LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));  
  94.   
  95.         return imageView;  
  96.     }  
  97.     @Override  
  98.     public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,  
  99.             long arg3) {  
  100.         imageSwitcher.setImageResource(resId[arg2 % resId.length]);  
  101.           
  102.     }  
  103.     @Override  
  104.     public void onNothingSelected(AdapterView<?> arg0) {  
  105.           
  106.     }  
  107. }  

相关内容