android点击本地缩略图,弹出显示服务器原图
16lz
2021-01-26
不多说 先上图:
点击本地列表中,实现新浪微博中点击缩略图 ,加载成原图! 刚开始做的时候,只是在布局上添加了一个隐藏的xml ,设置熟悉为居中显示,但后面显示的图片
效果有点僵硬,感觉就是叠加在一起,没有视觉的立体感,所以后面百度了下, 说可以直接用dialog 可以实现,但是没有找到demo 应用,所以只好自己动手写了一个
AlertImageDialog.java 类,专门实现点击弹出,通过服务器下载原图,下载的过程中,通过progressbar 经行默认加载,当数据回来时候,隐藏progressbar ,显示原图
点击该Dialog 直接消除,当再次点击,则不会去服务器,加载在本地数据库中,这样实现了基本的功能。
不多说了 ,希望对你有帮助:
/* * @project dongyi_program * @package com.jh.dongyi.activity * @file AlertImageDialog.java * @version 1.0 * @author yourname * @time 2011-12-19 上午08:00:41 * CopyRight: */package com.jh.dongyi.activity;import com.jh.dongyi.activity.MyWorkProjectActivity.btonclickListener;import com.jh.dongyi.util.Configuration;import com.jh.dongyi.util.DBFunction;import com.jh.dongyi.util.ImageFactory;import com.jh.dongyi.util.POAException;import android.app.Dialog;import android.content.Context;import android.graphics.Bitmap;import android.os.Handler;import android.os.Message;import android.view.View;import android.view.Window;import android.view.WindowManager;import android.widget.ImageView;import android.widget.ProgressBar;/** * * AlertImageDialog
* @description: TODO(弹出扩大图片的dialog) * @version 1.0 * @author liaoyp * @since 2011-12-19 */public class AlertImageDialog {private Context context;private String imagePath;private Dialog dialog;private DBFunction function;private Bitmap bitmap;/** * * @param context * @param originalImage 原图的地址 */public AlertImageDialog(Context context, String originalImage) {/** * constructor * @param number */this.context = context;this.imagePath = originalImage;}Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {// TODO Auto-generated method stub// 当数据回来时候影藏bar 显示原图
if(msg.what == 1 && bitmap != null){image.setImageBitmap(bitmap);bar.setVisibility(View.GONE);}}};private ImageView image;private ProgressBar bar;public void show() {create();dialog.show();} /** * * create
* @description: TODO(创建一个bitmap 当本地有则去本地存储,否则去服务器上下载 * @since 2011-12-19 yourname */ private void create(){ if(imagePath !=null){ String path =haveDownld(imagePath); if(path == null){ new Thread(){ public void run(){String localPath;try {//localPath = ImageFactory.getURLBitmap(imagePath,2);//function = new DBFunction(context);//function.addPhotoinfo(Configuration.return_customerId,imagePath,localPath);
考虑到可能没有环境,直接注释了从网络上获取,直接从数据库中加载图片,如果测试的时候,记得在sd卡中放一张图片,否则没有效果显示
this.sleep(3000);localPath=Configuration.DATADIR+Configuration.TempFile+"red.jpg";System.out.println("localpath> "+localPath);if(localPath != null){bitmap = ImageFactory.getFileBitmap(localPath,300, 300,context);System.out.println("==>"+bitmap);handler.sendEmptyMessage(1);}} catch (POAException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();} } }.start(); }else{try {bitmap = ImageFactory.getFileBitmap(path,300, 300,context);} catch (POAException e) {e.printStackTrace();} } } dialog=new Dialog(context);// 设置影藏dialog的标题栏,太难看了
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); dialog.setContentView(R.layout.image_dialog); initImageView(); } /** * * initImageView
* @description: TODO(初始化弹出对话框显示的图片) * @since 2011-12-19 yourname */ private void initImageView(){ image = (ImageView)dialog.findViewById(R.id.image); bar = (ProgressBar) dialog.findViewById(R.id.pb); if(bitmap != null){ image.setImageBitmap(bitmap); }else{ bar.setVisibility(View.VISIBLE); } image.setOnClickListener(new ImageView.OnClickListener() {public void onClick(View arg0) {if(dialog!=null){dialog.dismiss();}}}); }/** * * haveDownld
* @description: TODO(获取数据库中是否下载了该图片) * @param httpPath * @return * @since 2011-12-19 liaoyp */ public String haveDownld(String httpPath){String localPath = null;// 查询本地数据库function = new DBFunction(context); localPath = function.queryImagePath(httpPath, Configuration.return_customerId);return localPath;}}
布局文件 :
<?xml version="1.0" encoding="utf-8"?>
更多相关文章
- Android中显示GIF动画的实现代码
- android:ListView滑动时图片重复加载,多次调用了GetView().
- Android(安卓)Tasker应用之自动查询并显示话费流量套餐信息
- android 实现从网络上抓取图片并显示在手机上
- Android使用ViewPager实现图片轮播(高度自适应,左右循环,自动轮播)
- 针对Android(安卓)模拟器启动慢的问题,长时间显示 Android(安卓)L
- android显示RGB565数据图像
- Android(安卓)兼容Android(安卓)7拍摄照片/打开相册/选择照片/剪
- Android(安卓)性能优化之Loading Big Bitmaps