Android开发:Gallery与ImageSwitcher的综合使用


今天做了一下Gallery与ImageSwitcher的综合运用,下面是运行的效果,可以点击或者手动拖动图片:

下面附上源码:

  1. package com.Android.cf;  
  2.   
  3. import android.app.Activity;  
  4. import android.graphics.drawable.Drawable;  
  5. import android.os.Bundle;  
  6. import android.view.MotionEvent;  
  7. import android.view.View;  
  8. import android.view.Window;  
  9. import android.view.View.OnTouchListener;  
  10. import android.view.ViewGroup.LayoutParams;  
  11. import android.view.animation.AnimationUtils;  
  12. import android.widget.AdapterView;  
  13. import android.widget.Gallery;  
  14. import android.widget.ImageSwitcher;  
  15. import android.widget.ImageView;  
  16. import android.widget.AdapterView.OnItemClickListener;  
  17. import android.widget.AdapterView.OnItemSelectedListener;  
  18. import android.widget.ViewSwitcher.ViewFactory;  
  19.   
  20. public class MyMain extends Activity implements ViewFactory,  
  21.         OnItemSelectedListener {  
  22.     private ImageSwitcher mSwitcher;  
  23.     private Gallery mGallery;  
  24.     private int selectedTag = 0;  
  25.     private int upX, downX;  
  26.   
  27.     /** Called when the activity is first created. */  
  28.     @Override  
  29.     public void onCreate(Bundle savedInstanceState) {  
  30.         super.onCreate(savedInstanceState);  
  31.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  32.         setContentView(R.layout.main);  
  33.         setTitle("图片显示");  
  34.   
  35.         mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);  
  36.         mSwitcher.setFactory(MyMain.this);  
  37.         mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,  
  38.                 android.R.anim.fade_in));  
  39.         mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,  
  40.                 android.R.anim.fade_out));  
  41.         mSwitcher.setOnTouchListener(touchlistener);  
  42.         mGallery = (Gallery) findViewById(R.id.gallery);  
  43.         mGallery.setAdapter(new ImageAdapter(MyMain.this));  
  44.         mGallery.setOnItemSelectedListener(this);  
  45.     }  
  46.   
  47.     /** 
  48.      * (non-Javadoc) 
  49.      *  
  50.      * @see android.widget.ViewSwitcher.ViewFactory#makeView() 
  51.      */  
  52.   
  53.     @Override  
  54.     public View makeView() {  
  55.         ImageView i = new ImageView(this);  
  56.         i.setBackgroundColor(0xFF000000);  
  57.         i.setScaleType(ImageView.ScaleType.FIT_CENTER);  
  58.         i.setLayoutParams(new ImageSwitcher.LayoutParams(  
  59.                 LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));  
  60.         return i;  
  61.     }  
  62.   
  63.     OnTouchListener touchlistener = new OnTouchListener() {  
  64.   
  65.         @Override  
  66.         public boolean onTouch(View v, MotionEvent event) {  
  67.             if (event.getAction() == MotionEvent.ACTION_DOWN) {  
  68.                 downX = (int) event.getX(); // 取得按下时 的坐标x   
  69.                 return true;  
  70.             } else if (event.getAction() == MotionEvent.ACTION_UP) {  
  71.                 upX = (int) event.getX(); // 取得松开时的坐标x   
  72.                 if (upX - downX > 100) { // 从左拖到右,即看前一张   
  73.                     // 如果是第一,则去到尾部   
  74.                     if (mGallery.getSelectedItemPosition() == 0)  
  75.                         selectedTag = mGallery.getCount() - 1;  
  76.                     else  
  77.                         selectedTag = mGallery.getSelectedItemPosition() - 1;  
  78.                 } else if (downX - upX > 100)// 从右拖到左,即看后一张   
  79.                 {  
  80.                     // 如果是最后,则去到第一   
  81.                     if (mGallery.getSelectedItemPosition() == (mGallery  
  82.                             .getCount() - 1))  
  83.                         selectedTag = 0;  
  84.                     else  
  85.                         selectedTag = mGallery.getSelectedItemPosition() + 1;  
  86.                 }  
  87.                 // 改变gallery图片所选,自动触发ImageSwitcher的setOnItemSelectedListener   
  88.                 mGallery.setSelection(selectedTag, true);  
  89.                 return true;  
  90.   
  91.             }  
  92.             return false;  
  93.         }  
  94.   
  95.     };  
  96.   
  97.     /** 
  98.      * (non-Javadoc) 
  99.      *  
  100.      * @see android.widget.AdapterView.OnItemSelectedListener#onItemSelected(android.widget.AdapterView, 
  101.      *      android.view.View, int, long) 
  102.      */  
  103.   
  104.     @Override  
  105.     public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,  
  106.             long arg3) {  
  107.         mSwitcher.setImageResource(ImageAdapter.imageIDs[arg2]);  
  108.         selectedTag = arg2;  
  109.     }  
  110.   
  111.     /** 
  112.      * (non-Javadoc) 
  113.      *  
  114.      * @see android.widget.AdapterView.OnItemSelectedListener#onNothingSelected(android.widget.AdapterView) 
  115.      */  
  116.   
  117.     @Override  
  118.     public void onNothingSelected(AdapterView<?> arg0) {  
  119.   
  120.     }  
  121. }  
  • 1
  • 2
  • 下一页

相关内容