如图:
先在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: }