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 ...
随机推荐
- ASP。net 测验
Login.aspx using System; using System.Collections.Generic; using System.Linq; using System.Web; usin ...
- JS去掉数组的重复项
自己知道思路怎么去,但是就是自己不会写,在网上找了一些来看,有些还是没有怎么看明白.学习到了这么一种方法 var a=['ss','dd','ss','cc','dd',1,2,1] var b={} ...
- 2015弱校联盟(2) - J. Usoperanto
J. Usoperanto Time Limit: 8000ms Memory Limit: 256000KB Usoperanto is an artificial spoken language ...
- noi 6049 买书
题目链接: http://noi.openjudge.cn/ch0206/6049/ 6049:买书 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 小明手里有n ...
- RabbitMQ入门教程(转)
http://blog.csdn.net/column/details/rabbitmq-for-java.html http://blog.csdn.net/anzhsoft/article/det ...
- CentOS7 续续
1.配置网络,虚拟机为桥接模式,IP地址为 192.168.100+学号/24,配置完成后可以通过ping物理机192.168.100段,或者ping 192.168.100.140验证2.通过临时与 ...
- git 临时记录
http://blog.csdn.net/wangbole/article/details/8552808 http://blog.csdn.net/gq414047080/article/detai ...
- php总结 --- 2.字符串
字符串 恩聪 正则表达式 恩聪 中文验证 if (preg_match("/[\x{4e00}-\x{9fa5}]{2,4}\s{0,}\w{8,15}/u", $keyword) ...
- Div的宽度与高度的100%设定
div的100%是从其上一级div的宽高继承来的,所以必须设置其上一级div的宽度或高度,否则无效. 举例说明:父div(deman)宽300高200,子div(cc)如果在这个条件下设置divcc的 ...
- 0010 Linux 目录操作命令
01.更改目录 cd / 返回根目录 cd ~ 返回用户根目录 cd - 返回上个操作目录目录 ,等同于cd $OLDPWD 02.查看工作目录 pwd 03.创建目录 mkdir 目录名 0 ...