能够按照水平方向显示内容,并且可用手指直接拖动图片移动,一般用来浏览图片,被选中的选项位于中间,并且可以响应事件显示信息
1、布局文件
<!--spacing 设置列表项之间的距离
unselectedAppha 设置没有选中的列表项的透明度-->
<Gallery
android:id="@+id/gallery1"
android:spacing="5px"
android:unselectedAlpha="0.6"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
2、在MainActivity中,定义一个用于保存要显示图片id的数组
//定义并初始化保存图片id的数组
<span style="white-space:pre"> </span>private int[] imageId = new int[]{R.drawable.head01,R.drawable.head02,R.drawable.head03,R.drawable.head04,R.drawable.head05,
<span style="white-space:pre"> </span>R.drawable.head06,R.drawable.head07,R.drawable.head08,R.drawable.head09,R.drawable.head10,R.drawable.head11,R.drawable.head12};
3、在主活动onCreate()方法中,获取在布局文件中添加的画廊视图
Gallery gallery = (Gallery)findViewById(R.id.gallery1);
4、在res\values目录下,创建一个名称为attr.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<declare-styleable name = "Gallery">
<attr name = "android:galleryItemBackground"/>
</declare-styleable>
</resources>
5、创建BaseAdapter类的对象
BaseAdapter adapter = new BaseAdapter() {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;//声明ImageView对象
if(convertView == null){
imageView = new ImageView(MainActivity.this);//实例化ImageView的对象
imageView.setScaleType(ImageView.ScaleType.FIT_XY);//设置缩放方式
imageView.setLayoutParams(new Gallery.LayoutParams(180, 135));
TypedArray typedArray = obtainStyledAttributes(R.styleable.Gallery);
imageView.setBackgroundResource(typedArray.getResourceId(R.styleable.Gallery_android_galleryItemBackground, 0));
imageView.setPadding(5, 0, 5, 0);
}else{
imageView = (ImageView)convertView;
}
<span style="white-space:pre"> imageView.setImageResource(imageId[position]); // 为ImageView设置要显示的图片</span>
return imageView;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public Object getItem(int position) {
return imageId[position];
}
@Override
public int getCount() {
return imageId.length;
}
};
gallery.setAdapter(adapter);//将适配器与Gallery关联
gallery.setSelection(imageId.length/2);//选中中间的图片
gallery.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Toast.makeText(MainActivity.this, "您选择了第"+String.valueOf(position)+"张图片", Toast.LENGTH_SHORT).show();
}
});