Android 简单的图片查看器源码实现
程序员文章站
2023-12-17 11:02:22
本文介绍了android 简单的图片查看器源码实现,分享给大家,具体如下:
public class mainactivity extends activity...
本文介绍了android 简单的图片查看器源码实现,分享给大家,具体如下:
public class mainactivity extends activity { private edittext et_path; private imageview iv; //创建handler 对象 // private handler handler = new handler(){ // // //处理消息 // public void handlemessage(android.os.message msg) { // // bitmap bitmap = (bitmap) msg.obj; // iv.setimagebitmap(bitmap); // };}; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); // [1]找到我们关心的控件 et_path = (edittext) findviewbyid(r.id.et_path); iv = (imageview) findviewbyid(r.id.iv); } // [2]点击按钮进行查看 指定路径的源码 public void click(view v) { new thread(){public void run() { try { //[2.1]获取访问图片的路径 string path = et_path.gettext().tostring().trim(); file file = new file(getcachedir(),base64.encodetostring(path.getbytes(), base64.default)); if (file.exists()&& file.length()>0) { //使用缓存 的图片 system.out.println("使用缓存图片 "); final bitmap cachebitmap = bitmapfactory.decodefile(file.getabsolutepath()); //把cachebitmap 显示到iv上 // message msg = message.obtain(); // msg.obj = cachebitmap; // handler.sendmessage(msg); //发消息 runonuithread(new runnable() { public void run() { iv.setimagebitmap(cachebitmap); } }); }else{ //第一次访问 联网获取数据 system.out.println("第一次访问连接网络"); //[2.2]创建url对象 url url = new url(path); //[2.3]获取httpurlconnection httpurlconnection conn = (httpurlconnection) url.openconnection(); //[2.4]设置请求的方式 conn.setrequestmethod("get"); //[2.5]设置超时时间 conn.setconnecttimeout(5000); //[2.6]获取服务器返回的状态码 int code = conn.getresponsecode(); if (code == 200) { //[2.7]获取图片的数据 不管是什么数据(txt文本 图片数据 )都是以流的形式返回 inputstream in = conn.getinputstream(); //[2.7]缓存图片 谷歌给我们提供了一个缓存目录 fileoutputstream fos = new fileoutputstream(file); int len = -1; byte[] buffer = new byte[1024];//1kb while((len=in.read(buffer))!=-1){ fos.write(buffer, 0, len); } fos.close(); in.close(); //[2.8]通过位图工厂 获取bitmap(bitmap) final bitmap bitmap = bitmapfactory.decodefile(file.getabsolutepath()); //这句api 不 管你在什么位置上调用 action都运行在ui线程里 runonuithread(new runnable() { public void run() { //run方法一定执行在ui线程 里 // [2.9]把bitmap显示到iv上 iv.setimagebitmap(bitmap); } }); // message msg = message.obtain(); //使用msg的静态方法 可以减少对象的创建 // msg.obj = bitmap; // handler.sendmessage(msg); //发消息 } } } catch (exception e) { e.printstacktrace(); } };}.start();}}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。