028-86922220

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

如何高效利用Bitmap

这篇文章主要介绍“如何高效利用Bitmap”,在日常操作中,相信很多人在如何高效利用Bitmap问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何高效利用Bitmap”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:空间域名、雅安服务器托管、营销软件、网站建设、陕州网站维护、网站推广。

背景:图片加载在项目中是随处可见,而图片加载在很多情况下需要用到Bitmap(位图)这个类。Bitmap可以说是一个“大胖子”,因为Bitmap自身会将图片每个像素的属性全部保存在内存中。这就会导致我们稍有不慎就会创建出一个占用内存很大的Bitmap对象,从而导致加载速度过慢,常见表现为OOM(Out of Memory)。 
有必要对Bitmap进行优化,从而降低出现Crash情况的概率,提高app的加载图片速度,增强APP稳定性。

1
应用场景

举个栗子

如何高效利用Bitmap

上面的代码经常在我们的项目中出现。你可知其背后的处理逻辑? 
根据源码可知,上面的代码中两个方法setBackgroundResource()setImageResource()是使用Bitmap作为过渡处理的。在运行时,上面的两个方法会使用BitmapFactory.decodeStream()方法将资源图片生成一个Bitmap,然后由这个Bitmap生成一个Drawable,最后再将这个Drawable设置到ImageView。

如果运用以上代码,在加载的图片的尺寸远大于ImageView的尺寸,你会发现控件加载图片非常缓慢。你使用在ListView或RecycleView中批量加载一些未知size的图片的时候,你会发现会出现卡顿的情况。

2
BitmapFactory

BitmapFactory是谷歌官方为我们开发者提供加载图片方式的类,它可以从文件、图片传输流、字节数组这三种方式中加载图片。

3
Options类介绍

要实现高效加载Bitmap,首先我们要了解Options类的几个参数,因为正是通过合理的配置这几个参数,我们才能够实现高效的加载Bitmap对象。Options类是BitmapFactory的一个静态内部类,我们来看一下它的源码:

如何高效利用Bitmap

几个名词解释下:

4
Bitmap优化

1.获取图片的原始宽高 
通过将Options的inJustDecodeBounds属性设为true后调用decodeResource方法,可以实现不真正加载图片而只是获取图片的尺寸信息

如何高效利用Bitmap

2、根据原始宽高计算出inSampleSize,代码如下:

如何高效利用Bitmap

3、根据计算出的inSampleSize生成Bitmap

如何高效利用Bitmap

4、调用以上的decodeSampledBitmapFromResource方法,使用自定尺寸的Bitmap。 如果你要将一张大图设置为一个250*250的缩略图,执行以下代码:

如何高效利用Bitmap

到此,关于“如何高效利用Bitmap”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


新闻标题:如何高效利用Bitmap
转载来源:http://www.tsicrk.com/article/jcjgdd.html

其他资讯

让你的专属顾问为你服务

1.1006s