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

发布时间 - 2026-01-11 03:14:05    点击率:

本文介绍了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查看网络图片的实现方法  # Android图片处理教程之全景查看效果实现  # Android仿百度图片查看功能  # android自定义Camera拍照并查看图片  # Android 通过网络图片路径查看图片实例详解  # Android 网络图片查看器与网页源码查看器  # android网络图片查看器简单实现代码  # Android 实现WebView点击图片查看大图列表及图片保存功能  # Android实现图片查看功能  # 发消息  # 你在  # 给我们  # 给大家  # 这句  # 大家多多  # 可以减少  # 查看器  # id  # click  # onCreate  # layout  # Thread  # View  # setContentView  # super  # savedInstanceState  # findViewById  # activity_main  # Bundle 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在万网自助建站中设置域名及备案?  Laravel如何配置和使用缓存?(Redis代码示例)  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制  如何自定义建站之星模板颜色并下载新样式?  制作公司内部网站有哪些,内网如何建网站?  JavaScript常见的五种数组去重的方式  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  Android GridView 滑动条设置一直显示状态(推荐)  如何在万网利用已有域名快速建站?  UC浏览器如何设置启动页 UC浏览器启动页设置方法  Swift开发中switch语句值绑定模式  香港网站服务器数量如何影响SEO优化效果?  JavaScript如何实现音频处理_Web Audio API如何工作?  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  高防服务器如何保障网站安全无虞?  网站制作价目表怎么做,珍爱网婚介费用多少?  微信公众帐号开发教程之图文消息全攻略  轻松掌握MySQL函数中的last_insert_id()  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  如何用VPS主机快速搭建个人网站?  Bootstrap整体框架之JavaScript插件架构  ,在苏州找工作,上哪个网站比较好?  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  历史网站制作软件,华为如何找回被删除的网站?  使用Dockerfile构建java web环境  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  如何快速上传建站程序避免常见错误?  如何在万网主机上快速搭建网站?  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  Laravel如何使用Sanctum进行API认证?(SPA实战)  高防服务器:AI智能防御DDoS攻击与数据安全保障  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  怎么用AI帮你设计一套个性化的手机App图标?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付