首页 > 移动开发 > Android开发Gallery的使用

Android开发Gallery的使用

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

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

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

xml代码

 

[html][/html] view plaincopy在CODE上查看代码片派生到我的代码片

  1. <Gallery
  2.     android:id="@+id/gallery"
  3.     android:layout_width="fill_parent"
  4.     android:layout_height="wrap_content"
  5.     android:layout_alignLeft="@+id/textView1"
  6.     android:layout_below="@+id/textView1"
  7.     android:layout_marginTop="30dp"
  8.     android:spacing="3pt"
  9.     android:unselectedAlpha="0.6" />

 

java代码

 

[java][/java] view plaincopy

  1. Gallery gallery;
  2.     int[] imageIds=new int[]
  3.             {
  4.                     R.drawable.ic_launcher,
  5.                     R.drawable.ic_launcher,
  6.                     R.drawable.ic_launcher,
  7. //                  R.drawable.ic_launcher,
  8. //                  R.drawable.ic_launcher,
  9. //                  R.drawable.ic_launcher,
  10. //                  R.drawable.ic_launcher
  11.             }
  12.             ;
  13.     @Override
  14.     protected void onCreate(Bundle savedInstanceState)
  15.     {
  16.         super.onCreate(savedInstanceState);
  17.         setContentView(R.layout.activity_test_gallery);
  18.         gallery=(Gallery)findViewById(R.id.gallery);
  19.         BaseAdapter adapter=new BaseAdapter()
  20.         {
  21.             @Override
  22.             public View getView(int position, View convertView, ViewGroup parent)
  23.             {
  24.                 ImageView imageView=new ImageView(TestGalleryActivity.this);
  25.                 imageView.setImageResource(imageIds[position%imageIds.length]);
  26.                 imageView.setScaleType(ImageView.ScaleType.FIT_XY);
  27.                 imageView.setLayoutParams(new Gallery.LayoutParams(75,100));
  28.                 imageView.setBackgroundColor(Color.BLACK);
  29.                 return imageView;
  30.             }
  31.             @Override
  32.             public long getItemId(int position)
  33.             {
  34.                 // TODO Auto-generated method stub
  35.                 return position;
  36.             }
  37.             @Override
  38.             public Object getItem(int position)
  39.             {
  40.                 // TODO Auto-generated method stub
  41.                 return position;
  42.             }
  43.             @Override
  44.             public int getCount()
  45.             {
  46.                 // TODO Auto-generated method stub
  47.                 return imageIds.length;
  48.             }
  49.         };
  50.         gallery.setAdapter(adapter);
  51.     }

 

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


本文固定链接: http://www.devba.com/index.php/archives/3733.html | 开发吧

报歉!评论已关闭.