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

最后使用

 public void getBitmapFromNet(ImageView iv_photo, String url) {
// TODO Auto-generated method stub
BitmapTask bitmaptask=new BitmapTask();
bitmaptask.execute(iv_photo,url);//开启AsyncTask,参数在doInBackground获取
}

最新文章

  1. Lodash.js的库
  2. 【My Life】写在年末, 我的2013
  3. Android开发——搭建最新版本的Android开发环境
  4. ion-refresher 下拉更新数据
  5. JBoss7.1配置外网访问
  6. C bit 操作
  7. ActionFilterAttribute OnActionExecuting 获取参数
  8. 搭建自己的BT下载平台服务器
  9. ASP.NET Core MVC Tag Helpers 介绍
  10. JVM学习(一)
  11. Linux-CentOS7下安装mysql5.6常见问题解决!
  12. MySQL中遇到的几种报错及其解决方法
  13. Sass和less的区别是什么?用哪个好
  14. Kafka运行一段时间报错Too many open files
  15. JS导出gridview到excel
  16. iOS - UITableView加载网络图片 cell适应图片高度
  17. Docker基本命令与使用 —— Docker镜像与仓库(二)
  18. 51nod 1137 矩阵乘法
  19. Oracle 多行合并一行 方法
  20. ssh 远程执行命令 -t

热门文章

  1. 【转】使用json-lib进行Java和JSON之间的转换
  2. lib和dll的例子
  3. miniui datagrid 保存到服务端,使用.NET 自带 JSON 转换时发现日期格式不兼容。
  4. 2.里氏替换原则(Liskov Substitution Principle)
  5. java中final的用法
  6. Google JavaScript 语言规范
  7. 部署应用程序QQ
  8. 惊叹jQuery(解决jQuery对象到DOM的转换)
  9. [原创]jQuery的this和$(this)
  10. hdu 5258 数长方形 离散化