android 高效加载大图
在写代码的时候就已经解释:
/**
* 计算samplesize的大小
* @param options 传一个BitmapFactory.Options 进去获取图片的大小和类型
* @param viewWidth imageview的大小 宽
* @param viewHight imageview的大小 长
* @return 返回samplesize
*/
private static int caculateSampleSize(BitmapFactory.Options options, int viewWidth, int viewHight){
final int imageWidth = options.outWidth;
final int imageHight = options.outHeight;
int sampleSize = 1;
if (imageWidth > viewWidth || imageHight > viewHight){
final int halfImageWidth = imageWidth/2;
final int halfImageHight = imageHight/2;
while (halfImageHight/sampleSize>viewHight || halfImageWidth/sampleSize>viewWidth){
sampleSize *= 2;
}
}
return sampleSize;
}
/**
*通过资源图片设置好缩略图片
* @param res 资源图片
* @param resId 图片id
* @param viewWidth imageview控件宽
* @param viewHight imageview控件长
* @return 返回一个位图
*/
private static Bitmap decodeSampleBitmapFromResources(Resources res,int resId,int viewWidth,int viewHight){
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(res, resId, options);
//设置缩小的尺寸
options.inSampleSize = caculateSampleSize(options,viewWidth,viewHight);
options.inJustDecodeBounds = false;
return BitmapFactory.decodeResource(res, resId, options);
}
然后调用就行了。
imageView.setImageBitmap(decodeSampleBitmapFromResources(getResources(),R.mipmap.image_111,imageView.getMaxWidth(),imageView.getMaxHeight()));
最后给出一个 得到图片资源的大小和类型的方法:
/**
* 获得 图片 resId 的尺寸大小和类型
* @param resId 图片资源的ID
*/
private void setOpitions(int resId){
BitmapFactory.Options options = new BitmapFactory.Options();
//设置 inJustDecodeBounds 属性为true可以在解码的时候避免内存的分配,它会返回一个null的Bitmap,但是可以获取到 outWidth, outHeight 与 outMimeType。
options.inJustDecodeBounds = true;
//BitmapFactory.decodeResource(res,int res id,options);获得图片资源的一系列信息
BitmapFactory.decodeResource(getResources(),resId,options);
//图片资源的长宽和图片类型
int imageWidth = options.outWidth;
int imageHight = options.outHeight;
String imageType = options.outMimeType;
}
over!
android 高效加载大图的更多相关文章
- Android高效加载大图、多图解决方案,有效避免程序内存溢出现象
好久没有写博客了,今天就先写一个小的关于在Android中加载大图如何避免内存溢出的问题. 后面会写如何使用缓存技术的核心类,android.support.v4.util.LruCache来加载图片 ...
- Android高效加载大图、多图解决方案,有效避免程序OOM
高效加载大图片 我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状.不同的大小,但在大多数情况下,这些图片都会大于我们程序所需要的大小.比如说系统图片库里展示的图片大都是 ...
- Android高效加载大图、多图解决方案,有效避免程序OOM(转)
本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工,英文好的朋友也可以直接去读原文. http://developer.android.com/training/displaying ...
- Android高效加载大图
通过BitmapFactory的decode方法设置特定的options缩小图片到指定尺寸 1:通过加载设置了只编码图片边界options的图片,获取原图的尺寸和类型 2:计算图片需要缩小的倍数 3: ...
- Android高效加载大图,多图解决方案,有效避免程序OOM异常
收藏自:http://blog.csdn.net/guolin_blog/article/details/9316683 谷歌官方文档:http://developer.android.com/tra ...
- Android图片加载框架最全解析(三),深入探究Glide的缓存机制
在本系列的上一篇文章中,我带着大家一起阅读了一遍Glide的源码,初步了解了这个强大的图片加载框架的基本执行流程. 不过,上一篇文章只能说是比较粗略地阅读了Glide整个执行流程方面的源码,搞明白了G ...
- Android图片加载框架最全解析(一),Glide的基本用法
现在Android上的图片加载框架非常成熟,从最早的老牌图片加载框架UniversalImageLoader,到后来Google推出的Volley,再到后来的新兴军Glide和Picasso,当然还有 ...
- Android中高效的显示图片之一 ——加载大图
在网上看了不少文章,发现还是官方文档介绍最详细,把重要的东西简单摘要出来.详细可看官方文档地址 ( http://www.bangchui.org/read.php?tid=9 ) . 在应用中显示图 ...
- Android开发之高效加载Bitmap
一.概述 在Android开发中,我们经常与Bitmap打交道,而对Bitmap的不恰当的操作经常会导致OOM(Out of Memory).这篇文章我们会介绍如何高效地在Android开发中使用Bi ...
随机推荐
- Firefox刷新页面和复选框的奇葩问题
Firefox刷新页面后数据还在,估计很多人都碰到过. 但是有一个奇怪的地方就是复选框,如果你默认是勾选了,然后访问者取消勾选,刷新完之后,还是没有勾选,这是为什么? Firefox奇葩的地方就在于c ...
- stack overflow--技术问答网站
转自:http://baike.baidu.com/link?url=eMR6Pwdk9IkauI5B3nZb2Yo3VUAcK6vQfrMpcSMPWqgH0ngqFkup3Gdr3t_s_yZe_ ...
- 新知识:Java 利用itext填写pdf模板并导出(昨天奋战到深夜四点,知道今天两点终于弄懂)
废话少说,不懂itext干啥用的直接去百度吧. ***************制作模板******************* 1.先用word做出界面 2.再转换成pdf格式 3.用Adobe Acr ...
- html与jsp
1. 什么是 HTML 语言? HTML文件有什么特征? 答:HTML是超文本标记语言(Hypertext Mark-up Language)的缩写,主要用来创建与系统平台无关的网页文档.它是目前网络 ...
- js 获得日期相差天数
function getDays(strDateStart,strDateEnd){ var strSeparator = "-"; //日期分隔符 ...
- ADB指令
对于ADB指令的应用,首先应该配置环境,将文件所在路径复制到高级系统设置里面的环境变量path,然后就可以在命令符上进行ADB的指示 例如adb kill-server是关掉活动 adb start- ...
- SQL SA密码丢失
------------记不清了,以下似乎是这样操作的-----NET STOP MSSQLSERVER Net Start MSSQLServer /m"SQLCMD" 安装并使 ...
- selenium处理Ajax浮动框方法
package com.allin.pc;import java.util.List;import org.openqa.selenium.WebElement;import org.openqa.s ...
- ajax (返回类型:text)
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...
- [问题2015S12] 复旦高等代数 II(14级)每周一题(第十三教学周)
[问题2015S12] 设 \(A\) 为 \(n\) 阶实矩阵, 若对任意的非零 \(n\) 维实列向量 \(\alpha\), 总有 \(\alpha'A\alpha>0\), 则称 \( ...