转载声明:Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-)
http://blog.csdn.net/floodingfire/article/details/8168114
译者:Ryan Hoo
来源:https://developer.android.com/develop/index.html
译者按: 在Google最新的文档中,提供了一系列含金量相当高的教程。因为种种原因而鲜为人知,真是可惜!Ryan将会细心整理,将之翻译成中文,希望对开发者有所帮助。
本系列是Google关于展示大Bitmap(位图)的官方演示,可以有效的解决内存限制,更加有效的加载并显示图片,同时避免让人头疼的OOM(Out
Of Memory)。
-------------------------------------------------
译文:
图像可以有各种各样的形状和大小。在很多情况下,它们往往会比典型的应用UI界面所需要的更大。例如,系统的Gallery程序展示使用Android设备的摄像头拍摄的照片的分辨率往往要远高于设备的屏幕密度。考虑到你所使用的内存有限,理想的情况是你只会想加载一个分辨率相对较低的图片到内存中来。低分辨率版本的图片与相应UI组件的尺寸应该是相匹配的。一张高分辨率的图片并不能带给你任何可见的好处,却要占据着宝贵的内存,以及间接导致由于动态缩放引起额外性能开销。
这节课将向你演示如何解码大图片,通过加载较小的图片采样以避免超出应用的内存限制。
读取Bitmap(位图)的尺寸和类型
BitmapFactory提供了几种解码方式(decodeByteArray(), decodeFile(), decodeResource()等等),以便从多种资源中创建一个Bitmap(位图)对象。可以根据你的图片数据来源选择最合适的解码方式。这些方法视图为构造Bitmap对象分配内存,因此很容易导致OutOfMemory(OOM)异常。每一种解码方式都有额外的特征,你可以通过BitmapFactory.Options类类指定解码方法。在解码图片的时候设置inJustDecodeBounds属性为true,可以避免内存分配,返回的bitmap对象为null却可以设置outWidth, outHeight和outMimeType。这项技术允许你在创建Bitmap(并分配内存)之前读取图片的尺寸和类型。
将缩小版的图片加载到内存中
现在图片的尺寸已经知道了,这些信息可以用来决定是将一个完整尺寸的图片加载到内存中,还是应该用一个图片的子样本来取代它。这里有一些可供考虑的因素:
- 估计加载全尺寸的图片所要消耗的内存
- 在考虑应用中其他内存需求的情况下,你愿意给加载这个图片分配的内存空间。
- 准备加载该图像的目标ImageView或者UI组件的尺寸
- 当前设备的屏幕的尺寸和密度
例如,如果最终只是要在ImageView中显示一张128*96px大小的缩略图,直接加载1024*768px的图片是非常不值得的。
为了告诉解码器如何对图像进行采样,加载更小版本的图片,需要在BitmapFactory.Options对象中将inSampleSize设置为true。例如,一张分辨率为2048*1536px的图像使用inSampleSize值为4的设置来解码,产生的Bitmap大小约为512*384px。相较于完整图片占用12M的内存,这种方式只需0.75M内存(假设Bitmap配置为ARGB_8888)。这里有一个方法用来计算基于目标高宽的sample size的值:
提示:使用2的次幂来设置inSampleSize值可以使解码器执行地更加迅速、更加高效。但是,如果你想在内存或者硬盘上缓存一个调整过大小的图片,通常还是解码到合适的图片尺寸更加节省空间。
要使用这个方法,首先要使用inJustDecodeBounds为true来解码尺寸信息,将options传递过去使用新的inSampleSize值再次解码并且要将inJustDecodeBounds值设置为false。
1楼easyer2012昨天 22:37请教楼主:在ListView显示大量不同的图片(来自网络),这些图片应该在何时如何回收?谢谢Re: floodingfire昨天 09:10回复easyer2012n真正的回收由垃圾回收器决定的,这系列博客后续几篇讲的很清楚啊~案例是以GridView和ViewPager来进行的,但是也适用于ListView。ListView要从网络获取并显示大量图片,用后面的缓存方案再合适不过了。有几点基础要注意一下:1. 自定义Adapter避免每次都创建View 2. 使用用ViewHolder,能提高ListView的效率。 3. 使用后面讲解到的缓存方案。
《小圈子.大社交:利用圈子引爆流行》
基本信息
作者: (爱尔兰)Paul Adams [作译者介绍]
译者: 王志慧
出版社:人民邮电出版社
ISBN:9787115296818
上架时间:2012-11-13
出版日期:2012 年11月
开本:32开
页码:1
版次:1-1
所属分类: 计算机 > 电子商务与计算机文化 > 综合
更多关于 》》》《小圈子.大社交:利用圈子引爆流行》
内容简介
书籍
计算机书籍
《小圈子·大社交:利用圈子引爆流行》以对社交网络和社交行为的最新研究为基础,描述了如何与人们建立良好的关系,以及如何通过社交网络传播理念与品牌信息。内容涉及社交网络会怎样影响人,联系最密切的人为何会造成最大的影响,关注朋友间相互联系的社交圈为何比关注极具影响力的人物更重要。
《小圈子·大社交:利用圈子引爆流行》观点新颖,内容贴近实际,不仅能为营销人员提供具有启示意义的参考,也适合普通大众阅读。
目录
《小圈子·大社交:利用圈子引爆流行》
第1章 网络在改变 1
1.1 网络在如何改变 2
1.2 为什么网络会改变 9
1.3 为什么社交网络对企业有着重要意义 11
1.4 小结 13
1.5 延伸阅读 14
第2章 我们为何及如何与他人沟通 17
2.1 我们为何交谈 18
2.2 我们谈些什么 21
2.3 我们与谁交谈 26
2.4 小结 29
2.5 延伸阅读 30
第3章 社交方式对我们的影响 33
3.1 社交圈结构 34
3.2 自然而然形成圈子 40
3.3 社交圈结构改变我们受影响的方式 45
3.4 小结 50
3.5 延伸阅读 51
第4章 人际关系如何影响我们 53
4.1 人际关系的类型和模式 54
4.2 强联系 61
4.3 弱联系 64
4.4 人际关系如何变化 68
4.5 小结 69
4.6 延伸阅读 70
第5章 有影响力的人:破灭的神话 73
5.1 来往的人多并不代表影响力大 74
5.2 人会被影响,所以思想得以传播 76
5.3 核心人物如何传播思想 79
5.4 小结 83
5.5 延伸阅读 84
第6章 我们被周围的事物所影响 87
6.1 社会认同 88
6.2 圈子内部的影响 92
6.3 扩大的社交圈的影响 96
6.4 专家如何施加影响 98
6.5 小结 99
6.6 延伸阅读 100
第7章 大脑如何影响我们 103
7.1 我们不是理性的思考者 104
7.2 大多数行为受潜意识脑支配 108
7.3 记忆十分不可靠 113
7.4 小结 115
7.5 延伸阅读 116
第8章 偏见如何影响我们 119
8.1 他人影响我们的看法 120
8.2 既有观念影响我们的看法 122
8.3 习惯影响我们的看法 125
8.4 环境暗示影响我们的看法 127
8.5 小结 129
8.6 延伸阅读 130
第9章 社交网络上的营销和广告 133
9.1 打扰式营销的困境 134
9.2 许可营销和口碑营销的兴起 137
9.3 建立信任和信誉 143
9.4 小结 147
9.5 延伸阅读 147
第10章 总结 151
10.1 今日社交网络 152
10.2 放眼未来 156
本图书信息来源:中国互动出版网
第一套图标
下载地址
第二套图标
下载地址
第三套图标
下载地址
待续中....
来自东子的博客