【Google官方教程】前言:高效的Bitmap显示

原创
2012/11/09 14:49
阅读数 3.9K

声明:Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-) 

http://my.oschina.net/ryanhoo/blog/88153

译者:Ryan Hoo

来源:https://developer.android.com/develop/index.html

译者按: 在Google最新的文档中,提供了一系列含金量相当高的教程。因为种种原因而鲜为人知,真是可惜!Ryan将会细心整理,将之翻译成中文,希望对开发者有所帮助。

        本系列是Google关于展示大Bitmap(位图)的官方演示,可以有效的解决内存限制,更加有效的加载并显示图片,同时避免让人头疼的OOM(Out Of Memory)。

-------------------------------------------------------------------------------------

译文:

        这一系列教程覆盖了一些用于处理和加载Bitmap(位图)对象的常用技术,在某种程度上,使用这些技术可以使你的用户接口(UI)组件保持良好的响应性能,并且避免超出程序内存限制。如果你不小心翼翼,这些位图对象可以迅速消耗你的可用内存,并引起严重的错误而导致程序崩溃:

            java.lang.OutofMemoryError: bitmap size exceeds VM budget.

          这里有一堆的原因向你解释为什么在Android应用中加载Bitmap会如此棘手:

             · 移动设备一般只有有限的系统资源。Android设备为单个应用分配的可用内存仅为16M。在Android兼容性说明文档(Android Compatibility Definition Document(CDD))的3.7章————虚拟设备的兼容性中,给出了不同屏幕尺寸和密度的手机所需要的最小内存。在有着最小内存限制条件下,应用应该对性能进行优化处理。但是请记住,很多设备的配置要高于这个限制。

             · Bitmap(位图)尤其是一些像照片这种丰富的图片,需要占用大量的内存。例如,Galaxy Nexus摄像头拍摄的照片为2592*1936px(5百万像素)。如果使用ARGB_8888(Android2.3之前的默认配置)加载该位图,需要占用19M的内存(2592*1936*4),立马将一些设备的单个应用内存消耗一空。

            · Android应用的UI经常需要一次加载很多图片。像ListViewGridViewViewPager这种组件通常包含许多在屏幕上显示的位图,并且还有很多潜藏在屏幕之外的图片,准备在屏幕滑动的时候显示出来。

    要解决这些问题,你需要学习如下课程:

-------------------------------------------------------------------------------------

第一课:高效地加载大Bitmap

        这节课将带你贯穿各种以不超过应用的内存限制的方式解码大Bitmap。

第二课:在非UI线程中处理Bitmap

        Bitmap处理(改变图片尺寸,远程下载等等)不应该在UI线程中进行。这节课将带你学习使用AsyncTask在后台线程进行图片处理并且阐述如何处理并发问题。

第三课:缓存Bitmap

    这节课将教会你使用内存和硬盘两种方式缓存Bitmap来提升在加载多个Bitmap时UI的响应性和流畅性。

第四课:在你的UI中显示Bitmap

这节课将所有东西综合起来,向你展示如何使用后台线程和Bitmap缓存,加载多个Bitmap到ViewPager和GridView这样的组件中去。



展开阅读全文
打赏
8
100 收藏
分享
加载中

引用来自“RyanHoo”的评论

引用来自“sun76”的评论

我学的是不是有点太晚了

学习永远都不晚~
嘻嘻,谢谢鼓励,还有哦,那个最后的代码下载不了哦,说是“正在审核中”,能给我一份么,274909101@qq.com,谢谢
2014/11/02 10:18
回复
举报
RyanHoo博主

引用来自“sun76”的评论

我学的是不是有点太晚了

学习永远都不晚~
2014/10/31 10:25
回复
举报
我学的是不是有点太晚了
2014/10/30 10:44
回复
举报
真伟大啊13
2014/10/30 10:44
回复
举报
支持,鸟文看着有点吃力。
2013/03/11 17:20
回复
举报
顶了~~必须的
2012/11/12 10:41
回复
举报
这套系列必须顶一下的,谢谢分享了
2012/11/12 08:37
回复
举报
RyanHoo博主

引用来自“杨湧”的评论

谢谢了~真好

; -)
2012/11/11 23:02
回复
举报
谢谢了~真好
2012/11/11 22:59
回复
举报
RyanHoo博主

引用来自“janrone”的评论

讲完了 ????

不好意思,还有几篇,我暂时没有翻译过来。这两天比较忙,都是抽空翻译的。周末应该能翻译起来,敬请期待。
2012/11/09 20:24
回复
举报
更多评论
打赏
11 评论
100 收藏
8
分享
返回顶部
顶部