如果写一个列表点击一张图片来preview这张图片

可以才用继承AlertDialog的形式来写:

点击张图:

public void onClick(View v) {
		viewBigsizeBmp(((ImageView) v).getDrawable(), Constants.PREVIEW_BMP_DIR_SUFFIX);
		
	}
	
	private void viewBigsizeBmp(Drawable drawable, String suffix) {
		final String sdDir = Utils.getSDPath();
		final String saveDir = TextUtils.isEmpty(sdDir) ? mCacheDir : sdDir
				+ suffix;
		if (mBlog != null && mBlog.pic != null) {
			ImageViewerDialog dialog = new ImageViewerDialog(context,
					mBlog.pic, saveDir, drawable, suffix);  //mBlog.pic为图片请求的地址,如http://ww3.sinaimg.cn/wap120/67079b84jw1eiws9eajgxj20c80cbjt0.jpg
			//drawable为这张图片的缩略图资源
			dialog.setCanceledOnTouchOutside(true);
			dialog.show();
			dialog.setOnCancelListener(new AlertDialog.OnCancelListener() {
				@Override
				public void onCancel(DialogInterface dialog) {

				}
			});
			WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
			lp.width = context.getResources().getDimensionPixelSize(
					R.dimen.dialog_width);
			lp.height = context.getResources()
					.getDimensionPixelSize(R.dimen.dialog_height);
			dialog.getWindow().setAttributes(lp);
		}
	}

然后写这个Dialog:

public class ImageViewerDialog extends AlertDialog {

	private Context context;
	private LayoutInflater inflater;
	private LinearLayout layout;
	private ImageView iv;
	private ProgressBar pb;
	private String uri;
	private AsyncTask<Void, Void, Uri> loadPicTask;
	// 图片加载
	String picfilePath;
	public boolean loadPictureRunning;
	private boolean finishPicLoad;
	private boolean isRedirectBlog;
	// private File downloadedImage;

	private LoadPictureTask mldPicTsk;

	private String mSaveDir;

	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		this.setContentView(layout);
		try {
			new LoadPictureTask().execute();
		} catch (RejectedExecutionException e) {
		}

	}

	private class LoadPictureTask extends AsyncTask<Object, Void, Object[]> {

		protected Object[] doInBackground(Object... args) {

			Bitmap bmp = null;
			try {
				bmp = Utils.getPreviewBitmap(uri, context.getCacheDir()
						.getAbsolutePath(), context, null, false,
						Constants.PREVIEW_BMP_DIR_SUFFIX);

			} catch (Exception e) {
				// Utils.loge(e);
				return null;
			}
			return new Object[] { bmp };
		}

		protected void onPostExecute(Object[] objs) {
			loadPictureRunning = false;
			if (objs != null && objs[0] != null) {
				pb.setVisibility(View.GONE);
				iv.setImageBitmap((Bitmap) objs[0]);
				finishPicLoad = true;
			}
		}

		protected void onPreExecute() {
			super.onPreExecute();

		}
	}

	public ImageViewerDialog(Context context, String uri, String dir,
			Drawable drawable, String suffix) {
		super(context);
		this.context = context;
		this.mSaveDir = dir;
		inflater = LayoutInflater.from(context);
		layout = (LinearLayout) inflater.inflate(R.layout.imageviewerdialog,
				null);
		
		iv = (ImageView) layout.findViewById(R.id.ivImage);
		iv.setOnClickListener(new ImageView.OnClickListener() {

			public void onClick(View v) {
				// TODO Auto-generated method stub
				dismiss();
			}
		});
		pb = (ProgressBar) layout.findViewById(R.id.ProgressBar01);
		pb.setBackgroundDrawable(drawable);
		this.uri = uri;
	}

}

这个Dialog的Layout:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent" android:layout_height="fill_parent"
	android:gravity="center" android:background="@drawable/pic_bg">


	<ProgressBar android:id="@+id/ProgressBar01"
		android:layout_width="@integer/preview_pic_size" android:layout_height="@integer/preview_pic_size" 
		></ProgressBar>
	<ImageView android:id="@+id/ivImage" android:scaleType="fitXY"
		android:layout_width="wrap_content" android:layout_height="wrap_content" />

</LinearLayout>

效果图:


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值