android图片浏览器(三)——在对话框上实现图片浏览

前段时间弄了2个Gallery跟ImageSwitcher实现了图片浏览。

今天介绍一种在对话框上实现图像选择。

先声明,是借鉴别人的做法,觉得确实很好。

实现的效果如下:




部分关键代码如下:

对话框的设置:

重点是

setView(imageChooseView)
这个属性

	public void initImageChooseDialog() {
		if(imageChooseDialog == null) {
			AlertDialog.Builder builder = new AlertDialog.Builder(this);
			builder.setTitle("请选择图像")
			.setView(imageChooseView).setPositiveButton("确定", new DialogInterface.OnClickListener() {
				@Override
				public void onClick(DialogInterface dialog, int which) {
					imageChanged = true;
					previousImagePosition = currentImagePosition;
					imageButton.setImageResource(images[currentImagePosition%images.length]);
				}
			})
			.setNegativeButton("取消", new DialogInterface.OnClickListener() {
				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					currentImagePosition = previousImagePosition;
					
				}
			});
			imageChooseDialog = builder.create();
		}
	}


加载图片的方法:

	public void loadImage() {
		if(imageChooseView == null) {
			LayoutInflater li = LayoutInflater.from(AddNew.this);
			imageChooseView = li.inflate(R.layout.imageswitch, null);
			
			//通过渲染xml文件,得到一个视图(View),再拿到这个View里面的Gallery
			gallery = (Gallery)imageChooseView.findViewById(R.id.gallery);
			//为Gallery装载图片
			gallery.setAdapter(new ImageAdapter(this));
			gallery.setSelection(images.length/2);
			is = (ImageSwitcher)imageChooseView.findViewById(R.id.imageswitch);
			is.setFactory(this);
			is.setInAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_in));
	        //卸载图片的动画效果
	        is.setOutAnimation(AnimationUtils.loadAnimation(this, android.R.anim.fade_out));
			gallery.setOnItemSelectedListener(new OnItemSelectedListener(){

				@Override
				public void onItemSelected(AdapterView<?> arg0, View arg1,
						int arg2, long arg3) {
					//当前的头像位置为选中的位置
					currentImagePosition = arg2;
					//为ImageSwitcher设置图像
					is.setImageResource(images[arg2 % images.length]);
					
				}
				@Override
				public void onNothingSelected(AdapterView<?> arg0) {
					
				}});
		}
		
	}


重点,adapter的写法:

class ImageAdapter extends BaseAdapter {

		private Context context;
		
		public ImageAdapter(Context context) {
			this.context = context;
		}
		
		@Override
		public int getCount() {
			return Integer.MAX_VALUE;
		}

		@Override
		public Object getItem(int position) {
			return position;
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		
		/**
		 * gallery从这个方法中拿到image
		 */
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			ImageView iv = new ImageView(context);
			iv.setImageResource(images[position%images.length]);
			iv.setAdjustViewBounds(true);
			iv.setLayoutParams(new Gallery.LayoutParams(80,80));
			iv.setPadding(15, 10, 15, 10);
			return iv;
			
		}
		
	}

	

//这个是重写的的方法,我给加上注释。我是百度了很久也没找到这个方法的解释。只要对着有道看的源码~~  TAT
	
	@Override
	public View makeView() {
		ImageView view = new ImageView(this);
		view.setBackgroundColor(0xff000000);//设置背景边框颜色?
		view.setScaleType(ScaleType.FIT_CENTER);//设置 显示的类型  居中显示
		view.setLayoutParams(new ImageSwitcher.LayoutParams(90,90));//设置显示的图片大小
		return view;
	}



  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值