关闭

Android开发点点滴滴——Gallery的使用

标签: AndroidGallery
834人阅读 评论(0) 收藏 举报
分类:

Gallery视图和之前用到的Spinner视图,ListView视图等很类似,操作也异曲同工,都是需要Adapter来和数据源匹配起来。

基本上都是使用继承BaseAdapter来实现。

看着教程做的时候,发现设置了 没有选中列表项的透明度为0.6(选中的为1) 但是程序首次运行,显示正常,但是当滑动一次后,所有的列表项都变为透明的,上网查找,才发现,没有设置显示图片的背景/背景色,设置背景色为黑色后,一切正常。

xml代码

    <Gallery
        android:id="@+id/gallery"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/textView1"
        android:layout_below="@+id/textView1"
        android:layout_marginTop="30dp"
        android:spacing="3pt"
        android:unselectedAlpha="0.6" />

java代码

Gallery gallery;
	int[] imageIds=new int[]
			{
					R.drawable.ic_launcher,
					R.drawable.ic_launcher,
					R.drawable.ic_launcher,
//					R.drawable.ic_launcher,
//					R.drawable.ic_launcher,
//					R.drawable.ic_launcher,
//					R.drawable.ic_launcher
			}
			;
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_test_gallery);
		gallery=(Gallery)findViewById(R.id.gallery);
		BaseAdapter adapter=new BaseAdapter()
		{
			
			@Override
			public View getView(int position, View convertView, ViewGroup parent)
			{
				ImageView imageView=new ImageView(TestGalleryActivity.this);
				imageView.setImageResource(imageIds[position%imageIds.length]);
				imageView.setScaleType(ImageView.ScaleType.FIT_XY);
				imageView.setLayoutParams(new Gallery.LayoutParams(75,100));
				imageView.setBackgroundColor(Color.BLACK);
				
				return imageView;
			}
			
			@Override
			public long getItemId(int position)
			{
				// TODO Auto-generated method stub
				return position;
			}
			
			@Override
			public Object getItem(int position)
			{
				// TODO Auto-generated method stub
				return position;
			}
			
			@Override
			public int getCount()
			{
				// TODO Auto-generated method stub
				return imageIds.length;
			}
		};
		
		gallery.setAdapter(adapter);
		
	}


主要就是getVIew中 imageView.setBackgroundColor(Color.BLACK); 以上只是一个简单的例子。
事件触发的监听器和其他视图都类似。
Gallery视图可以在一行显示多张图片(或其他信息),而且支持水平拖动,也就是说不需要再额外增加水平滚动条。貌似只能让最中间一个列表项作为选中的项,这样只能实现特定功能,不好控制。但是作为图片浏览很是有很多其他创意的,比如网上可以找到3D显示等等。

Gallery视图已过期,网上牛人解释是:不能通过它的适配器(Adapter)合适的使用convertView,也就是说在绘制一个展示时,不得不为每个item创建一个新的视图。(Gallery不能回收视图,浪费资源)

1
1

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:77339次
    • 积分:1270
    • 等级:
    • 排名:千里之外
    • 原创:47篇
    • 转载:13篇
    • 译文:0篇
    • 评论:36条
    最新评论