使用gallary和imageswitcher可以在android中实现如windows中的幻灯片图片浏览效果。

gallary作为下面的图片选择部分,imageSwitcher作为图片显示部分

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><!-- 定义一个ImageSwitcher组件 --><ImageSwitcher android:id="@+id/switcher"android:layout_width="320dp"android:layout_height="320dp"/><!-- 定义一个Gallery组件 --><Gallery android:id="@+id/gallery"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_marginTop="25dp" android:unselectedAlpha="0.6"android:spacing="3pt"/></LinearLayout>

自定义一个BaseAdapter作为Gallary的数据源,设置一个setOnItemSelectedListener作为监听器,实时改变imageSwitcher中为图片,用TyoedArray保存Gallery中的属性值。

public class GallaryTest extends Activity{int[] imageIds = new int[]{R.drawable.shuangzi, R.drawable.shuangyu,R.drawable.chunv, R.drawable.tiancheng, R.drawable.tianxie,R.drawable.sheshou, R.drawable.juxie, R.drawable.shuiping,R.drawable.shizi, R.drawable.baiyang, R.drawable.jinniu,R.drawable.mojie };@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);final Gallery gallery = (Gallery) findViewById(R.id.gallery);// 获取显示图片的ImageSwitcher对象final ImageSwitcher switcher = (ImageSwitcher) findViewById(R.id.switcher);// 为ImageSwitcher对象设置ViewFactory对象switcher.setFactory(new ViewFactory(){@Overridepublic View makeView(){ImageView imageView = new ImageView(GallaryTest.this);imageView.setBackgroundColor(0xff0000);imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);imageView.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));return imageView;}});// 设置图片更换的动画效果switcher.setInAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_in));switcher.setOutAnimation(AnimationUtils.loadAnimation(this,android.R.anim.fade_out));// 创建一个BaseAdapter对象,该对象负责提供Gallery所显示的图片BaseAdapter adapter = new BaseAdapter(){@Overridepublic int getCount(){return imageIds.length;}@Overridepublic Object getItem(int position){return position;}@Overridepublic long getItemId(int position){return position;}// 该方法的返回的View就是代表了每个列表项@Overridepublic View getView(int position, View convertView, ViewGroup parent){// 创建一个ImageViewImageView imageView = new ImageView(GallaryTest.this);imageView.setImageResource(imageIds[position % imageIds.length]);// 设置ImageView的缩放类型imageView.setScaleType(ImageView.ScaleType.FIT_XY); //把图片 不按比例 扩大/缩小到View的大小显示imageView.setLayoutParams(new Gallery.LayoutParams(75, 100));//用TyoedArray保存Gallery中的属性值TypedArray typedArray = obtainStyledAttributes(R.styleable.Gallery);imageView.setBackgroundResource(typedArray.getResourceId(R.styleable.Gallery_android_galleryItemBackground, 0));return imageView;}};gallery.setAdapter(adapter);gallery.setOnItemSelectedListener(new OnItemSelectedListener(){// 当Gallery选中项发生改变时触发该方法@Overridepublic void onItemSelected(AdapterView<?> parent, View view,int position, long id){switcher.setImageResource(imageIds[position % imageIds.length]);}@Overridepublic void onNothingSelected(AdapterView<?> parent){}});}}


更多相关文章

  1. 自动化测试 Appium之Python运行环境搭建 Part2
  2. Android中Listview通过适配器设置Item的高度及其他样式
  3. Android使用饺子播放器播放服务器端的视频
  4. vapor开发随笔
  5. Android中ListView中使用CheckedTextView
  6. 解决Android创建AVD失败
  7. Android中一些实用的Tips
  8. Android(安卓)android-common 工具
  9. Android(安卓)中状态栏(屏幕顶部)消息的显示 Notification

随机推荐

  1. Android(安卓)Intent调用大全
  2. Android(安卓)binder 原理及实现机制
  3. Android 编译提示R文件找不到
  4. 導入android項目出錯問題解決
  5. Android Touch事件
  6. android installd分析
  7. Android Jetpack之Lifecycle的源码分析
  8. Android(安卓)四个步骤集成EventBus事件
  9. 2011.09.01(5)——— android checkbox自定
  10. startActivity exposed beyond app throu