阅读更多 ImageSwitcher图像切换器,可以切换器图像。ImageSwitcher类的继承图如下:
java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.FrameLayout
         ↳ android.widget.ViewAnimator
           ↳ android.widget.ViewSwitcher
             ↳ android.widget.ImageSwitcher
android.widget.ImageSwitcher继承了android.widget.FrameLayout框架布局类。为了便于学习,我们把官方的ImageSwitcher例子(ApiDemos/src/com/example/android/apis/view/ImageSwitcher1.java)做了一些修改,例子运行如图7-6屏幕,点击屏幕下面的缩图,实现图片的切换。
 
7.1.1 ImageSwitcher案例分析详解_第1张图片

图7-6 ImageSwitcher
请参考代码清单7-4,完整代码请参考chapter7_1工程中MyImageSwitcher代码部分。
【代码清单7-4】
public class MyImageSwitcher extends Activity {private ImageSwitcher mSwitcher;private Integer[] mThumbIds = { R.drawable.photo1_thumb,R.drawable.photo2_thumb, R.drawable.photo3_thumb,R.drawable.photo4_thumb, R.drawable.photo5_thumb,R.drawable.photo6_thumb };private Integer[] mImageIds = { R.drawable.photo1, R.drawable.photo2,R.drawable.photo3, R.drawable.photo4, R.drawable.photo5,R.drawable.photo6 };@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.image_switcher);mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);mSwitcher.setFactory(new ViewSwitcher.ViewFactory() {@Overridepublic View makeView() {ImageView i = new ImageView(MyImageSwitcher.this);i.setBackgroundColor(0xFF000000);i.setScaleType(ImageView.ScaleType.FIT_CENTER);i.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));return i;}});Gallery g = (Gallery) findViewById(R.id.gallery);g.setAdapter(new ImageAdapter(this));g.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {@Overridepublic void onItemSelected(AdapterView parent, View v,int position, long id) {mSwitcher.setImageResource(mImageIds[position]);}@Overridepublic void onNothingSelected(AdapterView<?> parent) {}});… … }… … }

在ImageSwitcher图像切换器中需要提供缩图数组集合mThumbIds和正常图片集合mImageIds。requestWindowFeature(Window.FEATURE_NO_TITLE)方法是设置没有标题的屏幕。
实现图像切换关键代码是mSwitcher.setFactory(new ViewSwitcher.ViewFactory() {…}),需要提供一个ViewSwitcher.ViewFactory接口为图像切换的时候创建一个View对象,由于是图像切换器,这个View是一个ImageView类的实例,i.setBackgroundColor(0xFF000000)指定背景颜色,i.setScaleType(ImageView.ScaleType.FIT_CENTER)指定排列方式为居中。下面的代码就是设置图片的布局与父容器匹配模式:
i.setLayoutParams(new ImageSwitcher.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
在屏幕下面的缩图是Gallery类型,点击缩图触发事件AdapterView.OnItemSelectedListener()时改变图片切换器的图片源mSwitcher.setImageResource(mImageIds[position]),从而实现图片的切换。
缩图的Gallery还必须实现一个BaseAdapter适配器,代码请参考代码清单7-5,完整代码请参考chapter7_1工程中MyImageSwitcher代码部分。
【代码清单7-5】
public class ImageAdapter extends BaseAdapter {public ImageAdapter(Context c) {mContext = c;}public int getCount() {return mThumbIds.length;}public Object getItem(int position) {return mThumbIds[position];}public long getItemId(int position) {return position;}public View getView(int position, View convertView, ViewGroup parent) {ImageView i = new ImageView(mContext);i.setImageResource(mThumbIds[position]);i.setAdjustViewBounds(true);i.setLayoutParams(new Gallery.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));i.setBackgroundResource(R.drawable.picture_frame);return i;}private Context mContext;}

getView()方法中返回缩图的对象,i.setImageResource(mThumbIds[position])是设置图片源,i.setAdjustViewBounds(true)设置图片对象边框自动调节,i.setLayoutParams()设置图片控件的布局,i.setBackgroundResource设置背景图片。
                                               出自《Android开发案例驱动教程》第七章
  • 7.1.1 ImageSwitcher案例分析详解_第2张图片
  • 大小: 101.8 KB
  • 查看图片附件

更多相关文章

  1. Android Chromium的标题代码运行路径
  2. android中网络图片的显示
  3. Android实用代码大全
  4. Android 图片相关
  5. Android设置铃声实现代码
  6. android 图片点击一下就放大到全屏,再点一下就回到原界面
  7. Android下常用的正则表达式判断工具类代码(手机,电话,Email,日期等待
  8. Android图片压缩、加水印

随机推荐

  1. 修改android文件系统为可读可写
  2. Android中Data和String数据类型转换
  3. Android仿WIN8系统磁贴点击下沉倾斜效果
  4. Android NDK编译时出现的问题以及解决办
  5. Android下的SQLite数据库的相关操作及And
  6. Android Java方法链起来!链式调用方法、仿
  7. 第一章:初入Android大门(程序加载应用)
  8. Android SDK Manager设置代理服务器和端
  9. android 中,关于线程安全退出的问题(from s
  10. android 验证码 (canvas)