说一下通过线程加载图片的过程:

  1. 首先根据ImageView获得适当的压缩的宽和高
  2. 然后计算inSampleSize,用于压缩图片
  3. 接着将图片添加到缓存
  4. 最后mUIHandler发送消息更新图片。

第一步 根据ImageView获得适当的压缩的宽和高

因为要获取到压缩的宽和高,方法只能返回一个值,所以我们可以采用内部类的方式将宽和高设置为变量,返回此类的对象即可。

  /*** 压缩的宽和高*/private class ImageSize{int width ;int height;}

计算压缩的宽和高的方法

 /*** 根据imageView获取适当的压缩的宽和高* @param imageView*/private ImageSize getImageViewSize(ImageView imageView) {ImageSize imageSize = new ImageSize();final DisplayMetrics displayMetrics = imageView.getContext().getResources().getDisplayMetrics();final ViewGroup.LayoutParams params = imageView.getLayoutParams();int width = params.width == ViewGroup.LayoutParams.WRAP_CONTENT ? 0 : imageView.getWidth(); // Get actual image widthif (width <= 0)width = params.width; // Get layout width parameterif (width <= 0)width = getImageViewFieldValue(imageView, "mMaxWidth"); // Check maxWidth parameterif (width <= 0)width = displayMetrics.widthPixels;int height = params.height == ViewGroup.LayoutParams.WRAP_CONTENT ? 0 : imageView.getHeight(); // Get actual image heightif (height <= 0)height = params.height; // Get layout height parameterif (height <= 0)height = getImageViewFieldValue(imageView, "mMaxHeight"); // Check// maxHeight// parameterif (height <= 0)height = displayMetrics.heightPixels;imageSize.width = width;imageSize.height = height;return imageSize;}
/*** 为了兼容低版本,没有采用@Target()的方式* 反射获得ImageView设置的最大宽度和高度** @param object* @param fieldName* @return*/private static int getImageViewFieldValue(Object object, String fieldName){int value = 0;try{Field field = ImageView.class.getDeclaredField(fieldName);**field.setAccessible(true);**int fieldValue = (Integer) field.get(object);if (fieldValue > 0 && fieldValue < Integer.MAX_VALUE){value = fieldValue;Log.e("TAG", value + "");}} catch (Exception e){}return value;}

Imageloader7-获取图片需要显示的大小相关推荐

  1. Android通过网络URL获取图片并显示

    1.布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:to ...

  2. android开发 获取相册名称_android通过拍照、相册获取图片并显示 实例完整源码下载(亲测通过)...

    [实例简介]其中也包含了 将图片保存至 sd卡功能 [实例截图] [核心代码] public class MainActivity extends Activity{ private static f ...

  3. input文件框选择本地图片后页面预览图片并获取图片长宽以及大小 图片上传前预览

    前面有转过一篇通过HTML5来实现图片上传前预览 ,现在借助FileReader也实现了这个需求.并且同时还可以获得图片的长宽相素以及图片文件的大小.demo如下: <html> < ...

  4. 获取图片宽高、大小和图片类型

    直接贴代码 public static void main(String[] args) {String picUrl = "http://placeimg.com/640/480/any. ...

  5. JavaScript获取浏览器的显示区域大小信息

    针对IE Firefox  数值不一样 区域说明 JavaScript Code 网页可见区域宽 document.body.clientWidth 网页可见区域高 document.body.cli ...

  6. vue 如何获取图片的原图尺寸_js获取图片信息(一)-----获取图片的原始尺寸

    如何获取图片的原始尺寸大小? 如下,当给 img 设置一个固定的大小时,要怎样获取图片的原始尺寸呢? #oImg{ width: 100px; height: 100px; } 方法一: HTML5提 ...

  7. 超大图片的显示:BitmapRegionDecoder 1

    不少安卓开发者都有图片加载的处理经验,比如通过压缩节省图片加载中对内存的消耗. 我们经常做的是把一张1280之类大小的图片以适应屏幕大小的尺寸展现出来,同时能够通过缩放来观察. 不过这是一般水平,通过 ...

  8. 获取拍照图片,显示大图像

    获取拍照图片 标准代码: 关键是传地址 显示大图像 加载并显示一幅图像对内存使用情况具有显著的影响.例如, HTC G1 电话带有一个 320 万像素的摄像头. 320 万像素的摄像头通常会捕获 20 ...

  9. js获取图片原始大小

    摘要: 浏览器中显示的图片大小未必是他真实的高和宽,比如像下面这样,我们给他加上宽和高的样式 <img src="IE.png" style="width:25px ...

  10. android listview网络图片,Android ListView从网络获取图片及文字显示

    上一篇文章说的是ListView展示本地的图片以及文本,这一篇说一下如何从网络获取图片以及文本来显示.事实上,一般是先获取Josn或sml数据,然后解释显示.我们先从网上获取xml,然后对其进行解析, ...

最新文章

  1. Fusion360操作记录
  2. 虚拟机+可信+云计算
  3. 设计模式之_Iterator_03
  4. java内存溢出分析工具:jmap使用实战
  5. win32开发(对话框启动)
  6. AWVS14.4.21安装时出现Internet server exception和扫描失败
  7. sqoop关系型数据迁移原理以及map端内存为何不会爆掉窥探
  8. Git:拉取远程分支
  9. 今天电脑突然出现问题: 请安装 TCP/IP 协议 错误 10106 【已解决·】
  10. three points 1(平面几何 三角形)
  11. 前端基础-VUE入门教程(一)
  12. 百慕大区块链战略不仅仅为了赢得新公司的青睐
  13. 如何写 [文献综述]
  14. 路由器TL-WR800N固件升级
  15. Realtek网卡插网线不亮灯解决方案
  16. 图片怎么转换文字?识别渠道一览
  17. UI设计中switch开关设计总结
  18. 使用Scrapy、PhantomJS和Selenium爬取知网文献摘要
  19. python3网络爬虫开发实战学习笔记(二)------python3 XPATH爬 猫眼电影排名
  20. ae安装失败计算机丢失,AE安装失败的原因你真知道吗 ?正确的安装AE软件

热门文章

  1. opencv 入门 demo
  2. neo4j删除所有节点
  3. python笔记:jieba(中文分词)
  4. pytorch笔记:torch.nn.GRU torch.nn.LSTM
  5. python笔记:Gurobipy
  6. tableau必知必会之学做直观的华夫饼图(Waffle Chart)
  7. 基于Matlab的标记分水岭分割算法(imreconstruct)
  8. 机器学习100天:专栏目录
  9. 《动手学深度学习》PyTorch版本
  10. 中文转unicode,中文转bytes,unicode转bytes java实现