当前位置:  编程技术>移动开发
本页文章导读:
    ▪【Google官方教程】第一课:高效地加载大Bit地图(位图)        【Google官方教程】第一课:高效地加载大Bitmap(位图) 转载声明:Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-)  http://blog.csdn.net/floodingfire/article/deta.........
    ▪ 小圈子.大社交:利用圈子引爆时兴        小圈子.大社交:利用圈子引爆流行《小圈子.大社交:利用圈子引爆流行》 基本信息 作者: (爱尔兰)Paul Adams [作译者介绍] 译者: 王志慧 出版社:人民邮电出版社 ISBN:9787115296818 上架时间.........
    ▪ WP8开发: Win8 作风图标收集       WP8开发: Win8 风格图标收集第一套图标 下载地址 第二套图标 下载地址 第三套图标 下载地址 待续中.... 来自东子的博客 ......

[1]【Google官方教程】第一课:高效地加载大Bit地图(位图)
    来源: 互联网  发布时间: 2014-02-18
【Google官方教程】第一课:高效地加载大Bitmap(位图)

转载声明: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(并分配内存)之前读取图片的尺寸和类型。

1 BitmapFactory.Options options = new BitmapFactory.Options();
2 options.inJustDecodeBounds = true;
3 BitmapFactory.decodeResource(getResources(), R.id.myimage, options);
4 int imageHeight = options.outHeight;
5 int imageWidth = options.outWidth;
6 String imageType = options.outMimeType;
        为了避免java.lang.OutOfMemeory异常,在解码图片之前就要检查图片的尺寸,除非你十分确信图片资源的尺寸是可预见的并且有着充裕的可用内存。 

将缩小版的图片加载到内存中 

        现在图片的尺寸已经知道了,这些信息可以用来决定是将一个完整尺寸的图片加载到内存中,还是应该用一个图片的子样本来取代它。这里有一些可供考虑的因素: 
  • 估计加载全尺寸的图片所要消耗的内存
  • 在考虑应用中其他内存需求的情况下,你愿意给加载这个图片分配的内存空间。
  • 准备加载该图像的目标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的值:

01 public static int calculateInSampleSize(
02             BitmapFactory.Options options, int reqWidth, int reqHeight) {
03     // Raw height and width of image
04     final int height = options.outHeight;
05     final int width = options.outWidth;
06     int inSampleSize = 1;
07  
08     if (height > reqHeight || width > reqWidth) {
09         if (width > height) {
10             inSampleSize = Math.round((float)height / (float)reqHeight);
11         } else {
12             inSampleSize = Math.round((float)width / (float)reqWidth);
13         }
14     }
15     return inSampleSize;
16 }

        提示:使用2的次幂来设置inSampleSize值可以使解码器执行地更加迅速、更加高效。但是,如果你想在内存或者硬盘上缓存一个调整过大小的图片,通常还是解码到合适的图片尺寸更加节省空间。

        要使用这个方法,首先要使用inJustDecodeBounds为true来解码尺寸信息,将options传递过去使用新的inSampleSize值再次解码并且要将inJustDecodeBounds值设置为false。

01 public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId,
02         int reqWidth, int reqHeight) {
03  
04     // First decode with inJustDecodeBounds=true to check dimensions
05     final BitmapFactory.Options options = new BitmapFactory.Options();
06     options.inJustDecodeBounds = true;
07     BitmapFactory.decodeResource(res, resId, options);
08  
09     // Calculate inSampleSize
10     options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
11  
12     // Decode bitmap with inSampleSize set
13     options.inJustDecodeBounds = false;
14     return BitmapFactory.decodeResource(res, resId, options);
15 }
        这个方法使得加载任意大小的Bitmap到展示100*100px缩略图的ImageView中更加简单,如下代码所示: 
1 mImageView.setImageBitmap(
2     decodeSampledBitmapFromResource(getResources(), R.id.myimage, 100, 100));
        你可以根据需要,按照类似的解码过程,采用适当的BitmapFactory.decode*方法从其他资源中解码Bitmap。 

1楼easyer2012昨天 22:37请教楼主:在ListView显示大量不同的图片(来自网络),这些图片应该在何时如何回收?谢谢Re: floodingfire昨天 09:10回复easyer2012n真正的回收由垃圾回收器决定的,这系列博客后续几篇讲的很清楚啊~案例是以GridView和ViewPager来进行的,但是也适用于ListView。ListView要从网络获取并显示大量图片,用后面的缓存方案再合适不过了。有几点基础要注意一下:1. 自定义Adapter避免每次都创建View 2. 使用用ViewHolder,能提高ListView的效率。 3. 使用后面讲解到的缓存方案。

    
[2] 小圈子.大社交:利用圈子引爆时兴
    来源: 互联网  发布时间: 2014-02-18
小圈子.大社交:利用圈子引爆流行

《小圈子.大社交:利用圈子引爆流行》
基本信息
作者: (爱尔兰)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

本图书信息来源:中国互动出版网


    
[3] WP8开发: Win8 作风图标收集
    来源: 互联网  发布时间: 2014-02-18
WP8开发: Win8 风格图标收集

第一套图标

下载地址


第二套图标

下载地址


第三套图标


下载地址

待续中....


来自东子的博客


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3