zoukankan      html  css  js  c++  java
  • 开启AsyncTask从网络加载图片

     1 /*AsyncTask  异步任务即做一些简单的异步处理  ;是handle与线程池的封装
     2      * 第一个泛型:参数类型泛型
     3      * 第二个泛型:更新进度泛型
     4      * 第三个泛型:onProgressUpdate的返回结果的泛型
     5      * 
     6      */
     7     
     8     class BitmapTask extends AsyncTask<Object, Void, Bitmap>{
     9 
    10         private ImageView pic;
    11         private String murl;
    12         /**
    13          * 后台耗时方法在此执行,子线程
    14          */
    15         @Override
    16         protected Bitmap doInBackground(Object... params) {
    17             pic = (ImageView) params[0];
    18             murl = (String) params[1];
    19             
    20             pic.setTag(murl);//将图片与url绑定
    21             return downloadBitmap(murl);
    22         }
    23         /**
    24          * 更新进度,主线程
    25          */
    26         @Override
    27         protected void onProgressUpdate(Void... values) {
    28             // TODO Auto-generated method stub
    29             super.onProgressUpdate(values);
    30         }
    31         /**
    32          * 后台耗时方法结束之后,在此执行,主线程
    33          */
    34         @Override
    35         protected void onPostExecute(Bitmap result) {
    36             if(result!=null){
    37                 
    38                 String tag = (String) pic.getTag();
    39                 if(tag.equals(murl)){
    40                     pic.setImageBitmap(result);
    41                 }
    42                 
    43             }
    44             mlocalcacheutils.setBitmapTolocal(murl, result);
    45             mmemorycacheutils.setBitmapTomemory(murl, result);
    46         }
    47     }
     1 /**
     2      * 
     3      * 下载图片
     4      * @return 
     5      */
     6     private Bitmap downloadBitmap(String url){
     7         HttpURLConnection conn=null;
     8         try {
     9             conn=(HttpURLConnection) new URL(url)
    10             .openConnection();
    11             
    12             conn.setConnectTimeout(5000);
    13             conn.setReadTimeout(5000);
    14             conn.setRequestMethod("GET");
    15             conn.connect();
    16             
    17             int responseCode = conn.getResponseCode();//响应码
    18             
    19             if(responseCode==200){//表示成功连接
    20                 InputStream inputStream = conn.getInputStream();
    21                 
    22                 //图片的压缩设置
    23                 BitmapFactory.Options option=new Options();
    24                 option.inSampleSize=2;//表示将图片压缩原来的二分之一,需要根据图片的大小来计算出压缩值的大小
    25                 option.inPreferredConfig=Bitmap.Config.RGB_565;//通过设置图片的格式即像素大小来进行图片的压缩
    26                 
    27                 Bitmap bitmap = BitmapFactory.decodeStream(inputStream,null,option);
    28                 return bitmap;
    29             }
    30             
    31         } catch (IOException e) {
    32             
    33             e.printStackTrace();
    34         }
    35         finally{
    36             conn.disconnect();
    37         }
    38         return null;
    39         
    40     }

    最后使用

    1 public void getBitmapFromNet(ImageView iv_photo, String url) {
    2         // TODO Auto-generated method stub
    3         BitmapTask bitmaptask=new BitmapTask();
    4         bitmaptask.execute(iv_photo,url);//开启AsyncTask,参数在doInBackground获取
    5     }
  • 相关阅读:
    生成word附件和word域动态赋值
    查询结果用Object类或其数组的List接收
    mustache多次渲染和多个赋值
    规范必备:枚举类型
    使用HttpClient发送请求、接收响应
    java接口对接——别人调用我们接口获取数据
    java接口对接——调用别人接口推送数据
    mustache语法
    Confluence 6 空间标识
    Confluence 6 从一个模板中创建一个空间
  • 原文地址:https://www.cnblogs.com/wangying222/p/5611917.html
Copyright © 2011-2022 走看看