Android 简单的图片查看器源码实现

所属分类: 软件编程 / Android 阅读数: 21
收藏 0 赞 0 分享

本文介绍了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();}}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

Android中加入名片扫描功能实例代码

这篇文章主要介绍了Android中加入名片扫描功能实例代码的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Android仿微信发表说说实现拍照、多图上传功能

这篇文章主要为大家详细介绍了Android仿微信发表说说实现拍照、多图上传功能,使用Retrofit2.0技术,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

设置Android系统永不锁屏永不休眠的方法

在进行Android系统开发的时候,有些特定的情况需要设置系统永不锁屏,永不休眠。本篇文章给大家介绍Android 永不锁屏,开机不锁屏,删除设置中休眠时间选项,需要的朋友一起学习吧
收藏 0 赞 0 分享

Android Retrofit 2.0框架上传图片解决方案

这篇文章主要介绍了Android Retrofit 2.0框架上传一张与多张图片解决方案,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android自定义等待对话框

这篇文章主要为大家详细介绍了Android自定义等待对话框的实现方法,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android中Window添加View的底层原理

这篇文章主要介绍了Android中Window添加View的底层原理,需要的朋友可以参考下
收藏 0 赞 0 分享

Android调用系统默认浏览器访问的方法

这篇文章主要介绍了Android调用系统默认浏览器访问的方法的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

Android开发退出程序的方法汇总

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,子窗口B又调用子窗口C,back返回子窗口B后,在B中如何关闭整个Android应用程序呢? 下面脚本之家小编就给大家介绍android开发退出程序的几种方法,感兴趣的朋友参考下吧
收藏 0 赞 0 分享

Android程序开发中单选按钮(RadioGroup)的使用详解

在android程序开发中,无论是单选按钮还是多选按钮都非常的常见,接下来通过本文给大家介绍Android程序开发中单选按钮(RadioGroup)的使用,需要的朋友参考下吧
收藏 0 赞 0 分享

Android实现仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中

这篇文章主要介绍了Android实现仿网易今日头条等自定义频道listview 或者grideview等item上移到另一个view中 的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多