第31讲 UI组件之 Gallery画廊控件
1.Gallery的简介
Gallery(画廊)是一个锁定中心条目并且拥有水平滚动列表的视图,一般用来浏览图片,并且可以响应事件显示信息。Gallery只能水平显示一行,且Gallery列表中的图片会根据不同的拖动情况向左或向右移动,直到最后一张图片为止。Gallery还可以和ImageSwitcher组件结合使用来实现一个通过缩略图来浏览图片的效果。
Gallery常用的XML属性
属性名称 | 描述 | |||||||||||||||||||||||||||||||||||||||
android:animationDuration | 设置布局变化时动画的转换所需的时间(毫秒级)。仅在动画开始时计时。该值必须是整数,比如:100。 | |||||||||||||||||||||||||||||||||||||||
android:gravity | 指定在对象的X和Y轴上如何放置内容。指定一下常量中的一个或多个(使用 “|”分割)
| |||||||||||||||||||||||||||||||||||||||
android:spacing | 图片之间的间距 | |||||||||||||||||||||||||||||||||||||||
android:unselectedAlpha | 设置未选中的条目的透明度(Alpha)。该值必须是float类型,比如:“1.2”。 |
一、实现图片的左右滑动浏览效果。
//Gallery的使用方法类似于其余的ViewGroup控件,使用adapter进行布局。
Gallery gallery=(Gallery)findViewById(R.id.gallery1);
//设置图片适配器
gallery.setAdapter(new MyAdapter(image,this));
//image:定义整型数组 即图片源
final int[] image=new int[] {R.drawable.attack , R.drawable .boy1 , R.drawable .boy2 , R.drawable .doupo };
MyAdapter定义如下:
private class MyAdapter extends BaseAdapter{
private int[] image;
private Context context;
public MyAdapter(int[] image, Context context) {
super();
this.image = image;
this.context = context;
}
public int getCount() { return image.length; } //获取图片的个数
public Object getItem(int arg0) { return null; }
public long getItemId(int arg0) { return 0; }
public View getView(int arg0, View arg1, ViewGroup arg2) {
ImageView imageView=new ImageView(context);
imageView.setImageResource(image[arg0]); //给ImageView设置资源
return imageView;
}
}
二、实现缩略图加放大图显示
对上述程序做修改:
首先,将layout设置为上方为ImageView,下方为Gallery显示缩略图。
之后,通过设置点击Gallery时设置图片到ImageView中。
final ImageView imageView=(ImageView)findViewById(R.id.imageView1);
Gallery gallery=(Gallery) findViewById(R.id.gallery1);
//设置图片适配器
gallery.setAdapter(new MyAdapter(image,this));
//设置监听器
gallery.setOnItemClickListener(newOnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, intposition, long arg3) {
imageView.setImageResource(image[position]);
}
});
public View getView(int arg0, View arg1,ViewGroup arg2) {
ImageView imageView=new ImageView(context);
//设置布局图片120x120显示
imageView.setLayoutParams(new Gallery.LayoutParams(120, 120));
imageView.setImageResource(image[arg0]); //给ImageView设置资源
return imageView;
}