备注:之前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)的更多相关文章

  1. 【Android】完善Android学习(七:API 4.0.3)

    备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...

  2. 【Android】完善Android学习(六:API 4.0)

    备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...

  3. 【Android】完善Android学习(五:API 3.2)

    备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...

  4. 【Android】完善Android学习(四:API 3.1)

    备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...

  5. 【Android】完善Android学习(三:API 3.0)

    备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...

  6. 【Android】完善Android学习(二:API 2.3.4)

    备注:之前Android入门学习的书籍使用的是杨丰盛的<Android应用开发揭秘>,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增 ...

  7. android移动开发学习笔记(二)神奇的Web API

    本次分两个大方向去讲解Web Api,1.如何实现Web Api?2.如何Android端如何调用Web Api?对于Web Api是什么?有什么优缺点?为什么用WebApi而不用Webservice ...

  8. android NDK 实用学习(二)-java端对象成员赋值和获取对象成员值

    1,关于java端类及接口定义请参考: android NDK 实用学习-获取java端类及其类变量 2,对传过来的参数进行赋值: 对bool类型成员进行赋值  env->SetBooleanF ...

  9. android开源项目学习

    FBReaderJ FBReaderJ用于Android平台的电子书阅读器,它支持多种电子书籍格式包括:oeb.ePub和fb2.此外还支持直接读取zip.tar和gzip等压缩文档. 项目地址:ht ...

随机推荐

  1. Python3 Tkinter-Spinbox

    1.创建 from tkinter import * root=Tk() Spinbox(root).pack() root.mainloop() 2.参数 from_    最小值 to    最大 ...

  2. java DTO 转 POJO

    如果这两个类的要转化的属性其属性名不一样的话,那只能用get和set方法赋值 如果你的两个类要转化的属性名都一样,那可以用org.springframework.beans.BeanUtils这个类来 ...

  3. 一个简单的Spring的AOP例子

    目标对象的接口:IStudent.java  1  /**  2  *  3   */  4  package  com.dragon.study; 5   6  /**  7  *  @author ...

  4. es6从零学习(一)let 和 const 命令

    es6从零学习(一):let 和 const 命令 一:let 变量 1.块级作用域{}:let只在自己的块级作用域内有效. for(let i =0;i<3;i++) { console.lo ...

  5. apache不解析php文件遍历目录

    程序目录下有index.php缺不能正常解析,直接刷出整个目录. 解决:在后面添加index.php的解析即可.. DirectoryIndex index.html index.html.var i ...

  6. Python中的print

    Python 3.X的print 在Python 3.X中,print是一个内置函数,完整的声明形式如下: print([object, ...][, sep=' '][, end='\n'][, f ...

  7. 第一章 Java Web应用开发技术

    Java Web应用开发是基于JavaEE(JavaEnterprise Edition)框架的,而JavaEE是建立在Java平台上的企业级应用解决方案.JavaEES框架提供的Web开发技术主要支 ...

  8. C#操作Excel执行分类多条件汇总合并

    之前发了一片模拟合并,详见模拟Excel同一列相同值的单元格合并 在之前的文章中介绍了思想,其中Excel采用的二维数组模拟,今天花了点时间,学习了一下C#操作Excel,实现了类似的效果! 准备 需 ...

  9. ZooKeeper server &&client

    写了一个关于zookeepeer应用的简单demo 服务端定时的向zookeeper集群注册,客户端监听zookeeper服务节点变化,一旦变化,立刻响应,更新服务端列表 服务端代码: #includ ...

  10. [剑指Offer] 58.对称的二叉树

    题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. [思路]递归,关键是isSame函数中的最后一句 /* struct Tree ...