如果写一个列表点击一张图片来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>

效果图:

如果写一个列表点击一张图片来preview这张图片,布布扣,bubuko.com

时间: 2024-12-23 09:36:09

如果写一个列表点击一张图片来preview这张图片的相关文章

写一个列表生成式,产生一个公差为11的等差数列

print([x*11 for x in range(10)]) 原文地址:https://www.cnblogs.com/sea-stream/p/11192554.html

[python] 1、python鼠标点击、移动事件应用——写一个自动下载百度音乐的程序

1.问题描述: 最近百度总爱做一些破坏用户信任度的事——文库金币变券.网盘限速,吓得我赶紧想办法把存在百度云音乐中的歌曲下载到本地. http://yinyueyun.baidu.com/ 可问题是云音乐中并没有批量下载,而上面我总共存了700多首音乐! 因此:有必要写一个脚本自动下载这些音乐了!!! 2.解决问题 自动下载歌曲有两种方法: JS法 模拟鼠标点击法 由于考虑到JS法需要分析网页结构.寻找下载链接,工作量有点大,于是选择用模拟鼠标点击法! 在linux上我首先想到用python来做

一个窗体里打开一张图片,点击button,跳转到另一个窗体里,让该窗体显示同一张图片该怎么实现898

一个窗体里打开一张图片,点击button,跳转到另一个窗体里,让该窗体显示同一张图片该怎么实现 baozoumanhua.com/users/17195301/talkingsbaozoumanhua.com/users/17195301/following_articlesbaozoumanhua.com/users/17195301/articlesbaozoumanhua.com/users/17195356baozoumanhua.com/users/17195356/forum_art

使用Volley来写一个List列表(Valley可以解决很大一部分android请求server的问题)

先上效果图: 先写一个Volley的请求的类: public void fetchData() { String url = "http://2.novelread.sinaapp.com/framework-sae/index.php"; // String body = ""; // try { // mEntity = new StringEntity(body); // } catch (UnsupportedEncodingException e1) {

20190125-找到列表第二大的数以及自己写一个冒泡排序

1. 给定一个列表,找出列表第二大的值 思路:考虑列表是可能是乱序列表,并且可能存在两个相等的最大值的情况. s1 = [34,33,2,1,6,7,7,44,3,23,23] 解法1:去重(解决可能存在两个相等的最大值),然后使用sort排序,然后然后通过切片取到第二大的值.tip,一定要先去重再排序,如果先排序再去重可能会打乱序列 s1 = [34,33,2,1,6,7,7,44,3,23,23] s2 = list(set(s1)) s2.sort() print(s2[-2]) #s2[

用weexplus从0到1写一个app(2)-页面跳转和文章列表及文章详情的编写

说明 结束连续几天的加班,最近的项目终于告一段落,今天抽点时间开始继续写我这篇拖了很久的<用weexplus从0到1写一个app>系列文章.写这篇文章的时候,weexplus的作者已经把weexplus重构了一下,可以同时打包出web端和native端,我这边的ui界面和项目结构也跟着做了一点变化.这里有weexplus官方放出的一个电影APP的demo,有需要的可以去下载看看,然后顺便给weexplus一个star吧! 文章可能会很长,在此分几篇文章来写,先占个坑: 用weexplus从0到

利用列表的知识写一个购物小程序

利用列表,写一个购物小程序,实现显示商品,显示余额,显示购物车的商品,可以随时退出. 1 product_list = [ 2 ('Mac', 9000), 3 ('Kindle', 800), 4 ('tesla', 900000), 5 ('python book', 105), 6 ('bike', 2000), 7 ] 8 9 saving = input('please input your money:') 10 shopping_car = [] 11 if saving.isdi

使用jeesite框架写一个树结构的列表页面(一般的数据表结构)

先上图,看一下需要完成的列表页的效果 以区域树结构列表为例子,大致就是要完成这个效果 1.做这个需求之前,我大致阅读了jeesite官方文档( https://jeesite.gitee.io/docs/)关于树表结构的文档(带有树表两个字的都看了看),查看了jeesite框架中自带的页面实例,又查看了项目中一些运用了树结构的页面以及后台代码. 按照文档走,我搞不出来这个东西...,为什么别的页面用得好好的呢???最后发现,我的数据表结构有点问题, jeesite的这个树结构如果要直接使用的话,

写一个ajax程序就是如此简单

写一个ajax程序就是如此简单 ajax介绍: 1:AJAX全称为Asynchronous JavaScript and XML(异步JavaScript和XML),指一种创建交互式网页应用的网页开发技术.     2:基于web标准XHTML+CSS的表示:     3:使用 DOM进行动态显示及交互:     4:使用 XML 和 XSLT 进行数据交换及相关操作:     5:使用 XMLHttpRequest 进行异步数据查询.检索: 程序员应用ajax的途经: 1:.Net下的Ajax