画廊视图Gallery

能够按照水平方向显示内容,并且可用手指直接拖动图片移动,一般用来浏览图片,被选中的选项位于中间,并且可以响应事件显示信息

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;
			}
		};


6、将创建的适配器与Gallery关联

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();
			}
		});



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值