【Android】完善Android学习(一:API 2.3.3)
备注:之前Android入门学习的书籍使用的是杨丰盛的《Android应用开发揭秘》,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增加了很多的新组件,一直没有系统的学习过。现在开始这个“完善Android学习”系列,将2.2以后的新知识做一个概览。概览来自:http://developer.android.com/about/versions/android-2.3.3.html
一、Graphics
A)BitmapRegionDecoder
这个类可以读取图片中的某一块矩形内容,当原图片非常大,而只需要展示其中一块的时候,这个类特别有用。
B) inPreferQualityOverSpeed
BitmapFactory.Options是一个类,其用法如下:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
Bitmap bmp = BitmapFactory.decodeFile(path, options);
BitmapFactory.Options有很多属性可以设置true和false,这样可以操作读取图片时候的具体属性。详述如下:
1)inBitmap:
2)inDensity:见inTargetDensity
3)inDither:如果设置为true,则如果图像存在抖动,就处理抖动,设置为false则不管抖动问题;
4)inInputShareable:和inPurgeable属性一起使用,如果inPurgearble被设置为false,该属性就被忽视,如果inPurgeable被设置为true,这个属性就决定Bitmap是对元数据(inputstream、array等)进行浅拷贝还是深拷贝;
5) inJustDecodeBounds:该属性被设置为true之后(可见前面的示例代码),返回的Bitmap是Null,但是options中的outWidth和outHeight属性却会被设置,这样可以在不分配内存空间给图片的条件下获取图片的属性。
6)inMutable:如果设置为true,则decoder返回的是可变的Bitmap,这可以用来对Bitmap施加一些效果;
7)inPreferQualityOverSpeed:牺牲解码的速度,获得更高的解码质量;
8)inPreferredConfig:Bitmap.Config值,配置Bitmap的色彩存储方式,有以下四个值:
public static final Bitmap.Config ALPHA_8
public static final Bitmap.Config ARGB_4444
public static final Bitmap.Config ARGB_8888
public static final Bitmap.Config RGB_565
由此可见
ALPHA_8——代表8位Alpha位图(没有存储任何的色彩信息,每一个像素只需要1byte存储);
ARGB_4444——代表16位ARGB位图,质量太差,建议使用ARGB_8888;
ARGB_8888——代表32位ARGB位图,非常灵活,并且可以提供最好质量的图片显示,只要允许,就应该使用该配置;
RGB_565——代表8位RGB位图,不存储Alpha值,只用2bytes存储RGB信息;
9)inPremultiplied:如果被设置为true(默认值),在图片被显示出来之前各个颜色通道会被事先乘以它的alpha值,如果图片是由系统直接绘制或者是由Canvas绘制,这个值不应该被设置为false,否则会发生RuntimeException;
10)inPurgeable:如果该属性设置为true,当系统需要回收内存的时候,解码出来的Bitmap所占用的内存空间将会被清除,当再次需要使用该bitmap的时候,它就会被自动重新解码,为了重新解码,bitmap必须可以通过共享输入引用(浅复制)或者深度复制数据的方式访问存储Bitmap的原始数据。这个是由inInputShareable属性控制的。如果设置为true,就进行浅复制;如果是false,则进行深度复制并且保存数据,有时候即使允许共享,实现中也会进行输入数据的深度拷贝。该属性在decldeResource和decodeFile中使用的时候失效。
11) inSampleSize:根据设置的值缩小图片,假如设置为n,则长宽都变为原始的1/n,设置的值应该是2的幂,如果不是,就减少至最近的2的幂,比如,设置为15,则实际为8;
12)inScaled:见inTargetDensity
13)inScreenDensity:正在使用的屏幕的像素密度。
14)inTargetDensity:见:http://blog.csdn.net/sevensundark/article/details/7616450,inScaled设置为true的时候,如果InDensity和inTragetDensity都不是0并且不相等,那么bitmap就会被放缩成inTargtDensity;
15)inTempStorage:分配给解码的临时存储空间,建议值为16K;
它有两个方法:
1)BitmapFactory.Options ():创建一个默认的Options实例,如果不做设置,就像传递了一个null给decoder一样;
2)requestCancelDecode ():可以跨线程调用,从另外一个线程中调用options的该方法,就是告诉使用该options的decoder终止它的解码操作,该方法不保证终止解码,但是如果终止了,解码操作就会返回null,如果inJustDecodeBounds被设置为true,outWidth和outHeight就会被设置为-1;
二、Media framework
A)MediaMetadataRetriever
顾名思义:媒体元数据检索器。也就是说可以检索一个媒体文件的相关信息,比如视频文件的标题,唱片,播放时间等,具体示例可见:MediaMetadataRetriever类取得媒体文件信息(麻麻再也不用担心我很麻烦地获取音频文件的时长了),API可见:http://developer.android.com/reference/android/media/MediaMetadataRetriever.html
B)MediaRecorder.AudioEncoder and MediaRecorder.OutputFormat
主要是增加了AMR新的录制编码标准,以及ACC录音格式。
【Android】完善Android学习(一:API 2.3.3)的更多相关文章
- 【Android】完善Android学习(七:API 4.0.3)
备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...
- 【Android】完善Android学习(六:API 4.0)
备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...
- 【Android】完善Android学习(五:API 3.2)
备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...
- 【Android】完善Android学习(四:API 3.1)
备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...
- 【Android】完善Android学习(三:API 3.0)
备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...
- 【Android】完善Android学习(二:API 2.3.4)
备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...
- android移动开发学习笔记(二)神奇的Web API
本次分两个大方向去讲解Web Api,1.如何实现Web Api?2.如何Android端如何调用Web Api?对于Web Api是什么?有什么优缺点?为什么用WebApi而不用Webservice ...
- android NDK 实用学习(二)-java端对象成员赋值和获取对象成员值
1,关于java端类及接口定义请参考: android NDK 实用学习-获取java端类及其类变量 2,对传过来的参数进行赋值: 对bool类型成员进行赋值 env->SetBooleanF ...
- android开源项目学习
FBReaderJ FBReaderJ用于Android平台的电子书阅读器,它支持多种电子书籍格式包括:oeb.ePub和fb2.此外还支持直接读取zip.tar和gzip等压缩文档. 项目地址:ht ...
随机推荐
- STM32串口通信UART使用
STM32串口通信UART使用 uart使用的过程为: 1. 使能GPIO口和UART对应的总线时钟 2. 配置GPIO口的输出模式 3. 配置uart口相关的基本信息 4. 使能uart口的相关的中 ...
- POJ 3714 Raid(计算几何の最近点对)
Description After successive failures in the battles against the Union, the Empire retreated to its ...
- 【转】Backbone.js学习笔记(二)细说MVC
文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Bac ...
- 【转】Angular.js VS. Ember.js:谁将成为Web开发的新宠?
本文源自于Quora网站的一个问题,作者称最近一直在为一个新的Rails项目寻找一个JavaScript框架,通过筛选,最终纠结于 Angular.js和 Ember.js. 这个问题获得了大量的关注 ...
- v-if或者v-repeat等不起作用
v-if或者v-for等不起作用 在项目中,有时遇到了v-if或v-for等形式时,页面没起作用.以下可能是出现这些问题的原因: 1.绑定值是接口返回的某个属性值,而这个属性值不存在data()中,这 ...
- C语言文件进阶操作
Description文件a.dic.b.dic.c.dic中分别存有张三的三科成绩,每个文件都是16字节:前8个字节存储其英文名字zhangsan,后面是一个空格,其后的2个字节存储其年龄(文本方式 ...
- Martian Addition
In the 22nd Century, scientists have discovered intelligent residents live on the Mars. Martians are ...
- 【linux】- nohup 和 &
&的意思是在后台运行, 什么意思呢? 意思是说,当你在执行 ./a.out & 的时候,即使你用ctrl C,那么a.out照样运行(因为对SIGINT信号免疫).但是要注意,如果你直 ...
- 第二部分shell编程2正则(grepegrepsedawk)
一.grep/egrep 1. 语法+选项语法: grep [-cinvABC] 'word' filename -c :打印符合要求的行数-n :在输出符合要求的行的同时连同行号一起输出 -v :打 ...
- tcp发送缓冲区中的数据都是由产生数据的进程给推送到ip层还是有定时任务触发?
和几个变量有非常大的关系 发送缓冲区的大小,如何单独设置一个socket的发送缓冲区 socketopt 发送缓冲区中的数据,如果被拥塞窗口限制住了,那么这些数据可能就放在tcpbuffer里的,此时 ...