前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Androd UI学习之ImageSwitcher

Androd UI学习之ImageSwitcher

作者头像
DragonKingZhu
发布2022-05-08 15:57:27
1860
发布2022-05-08 15:57:27
举报
文章被收录于专栏:Linux内核深入分析

上一节学习了Gallery,本节结合Gallery来学习ImageSwitcher。

先贴出最终的效果图:

逻辑部分代码:

代码语言:javascript
复制
public class ImageSwitcherActivity extends Activity
{
	private static ImageSwitcher mImageSwitcher;
	private static Gallery mGallery;
	private int[] images = 
	{
		R.drawable.a, R.drawable.b,
		R.drawable.c, R.drawable.d,
		R.drawable.e, R.drawable.f,
		R.drawable.h
	};
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_imageswitcher);
		
		mImageSwitcher = (ImageSwitcher)findViewById(R.id.image_switcher);
		mGallery = (Gallery)findViewById(R.id.gallery);
		
		mImageSwitcher.setFactory(new MyViewFactory(this));
		//默认显示中间图片
		mImageSwitcher.setImageResource(images[images.length/2]);
		mGallery.setAdapter(new MyAdapter(this));
		mGallery.setSpacing(10);
		//默认显示中间图片
		mGallery.setSelection(images.length/2);
		//设置监听器,
		mGallery.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				// TODO Auto-generated method stub
				mImageSwitcher.setImageResource(images[position%images.length]);
			}
		});
	}
	
	class MyViewFactory implements ViewFactory
	{
		private Context context;
		public MyViewFactory(Context context)
		{
			this.context = context;
		}
		@Override
		public View makeView() {
			ImageView view = new ImageView(this.context);
			view.setBackgroundColor(0xFF000000);
			//设置显示位置
			view.setLayoutParams(new ImageSwitcher.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
			return view;
		}
		
	}

	class MyAdapter extends BaseAdapter
	{

		private Context context;
		public MyAdapter(Context context)
		{
			this.context = context;
		}
		
		@Override
		public int getCount() {
			// 获取图片资源的总数
			//return images.length;
			return Integer.MAX_VALUE;
		}

		@Override
		public Object getItem(int position) {
			// 获得图片当前位置
			return position;
		}

		@Override
		public long getItemId(int position) {
			// 获得当前位置的图片ID
			return images[position];
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			// 获得当前图片资源
			
			ImageView view = new ImageView(this.context);
			
			view.setImageResource(images[position%images.length]);
			view.setAdjustViewBounds(true);
			//设置图片的大小
			view.setLayoutParams(new Gallery.LayoutParams(100, 100));
			//view.setPadding(15, 10, 15, 10);
			return view;
		}
		
	}
	
}

本示例可实现循环选择, 刚进来默认是中间的一张图片

布局文件如下:

代码语言:javascript
复制
    <ImageSwitcher 
        android:id="@+id/image_switcher"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
        
    </ImageSwitcher>
    
	<Gallery 
    	android:id="@+id/gallery"
    	android:layout_width="fill_parent"
    	android:layout_height="wrap_content"
    	android:layout_alignParentBottom="true"
    	android:layout_alignParentLeft="true"
    	/>

ok。 运行的效果图就是上图所示。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档