如图:
先在attr.xml里写个Gallery的样式
1: <?xml version="1.0" encoding="utf-8"?>
2: <resources>
3: <declare-styleable name="Gallery">
4: <attr name="android:galleryItemBackground" />
5: </declare-styleable>
6: <!-- 定义Layout外部resources 的xml文件,用来改变Layout的背景图 -->
7: </resources>
8:
然后在mainActivity里的OnCreate里:
1: setContentView(R.layout.main);
2:
3: imageAdapter = new myImageAdapter(this);
4:
5: gallery = (Gallery) findViewById(R.id.Gallery_preView);
6: imageView = (ImageView) findViewById(R.id.ImageView_photo);
7:
8: gallery.setAdapter(imageAdapter);
9: gallery.setSelection(200);//设置Gallery的起始位置
下面是imageAdapter的类,它继承BaseAdapter
图片资源:
1: protected int[] myImageIds = { R.drawable.vista_1, R.drawable.vista_2,
2: R.drawable.vista_3, R.drawable.vista_4, R.drawable.vista_5,
3: R.drawable.vista_6, };
构造里:
1: public myImageAdapter(Context context) {
2: mContext = context;
3: /* 使用res/values/attr.xml中的<declare-styleable>定义的Gallery属性 */
4: TypedArray typed_array = context
5: .obtainStyledAttributes(R.styleable.Gallery);
6: mGalleryItemBackground = typed_array.getResourceId(
7: R.styleable.Gallery_android_galleryItemBackground, 0);
8: /* 让对象的styleable 属性能够反复使用 */
9: typed_array.recycle();
10: }
11:
getCount()方法:
1: @Override
2: public int getCount() {
3: // TODO Auto-generated method stub
4: // return myImageIds.length;
5: return Integer.MAX_VALUE;
6: }
getView()方法:
1: @Override
2: public View getView(int position, View convertView, ViewGroup parent) {
3: ImageView i = new ImageView(mContext);
4:
5: if (position < 0) {
6: position = position + myImageIds.length;
7: }
8: i.setImageResource(myImageIds[position % myImageIds.length]);
9: i.setScaleType(ImageView.ScaleType.FIT_XY);
10: i.setLayoutParams(new Gallery.LayoutParams(128, 128));
11: i.setBackgroundResource(mGalleryItemBackground);
12: return i;
13: }