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

