备注:之前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. C Program基础-宏定义

    写好c语言,漂亮的宏定义是非常重要的,我们在阅读别人工程时,往往能看到大量的宏定义,宏定义可以增加代码的可读性,也能增加代码的可移植性,一个好的宏定义甚至是一件艺术品.今天我们就来看看宏定义的方方面面 ...

  2. POJ 1113 Wall(计算几何の凸包)

    Description Once upon a time there was a greedy King who ordered his chief Architect to build a wall ...

  3. 【树莓派 Raspberry-Pi 】系统安装及一些必要的配置

    上周六刚收到我的小电脑,被无线设置卡住了,文章并非原创,参考了几个朋友的折腾经历,自己整理下备忘,也希望能帮到和我一样在树莓派方面小白的人,也希望可以和更多有这方面兴趣的朋友共同交流 0. 操作系统下 ...

  4. c# 读取xml文件 编写form

    主要思想:xml保存控件的数据,c#读取出来并加以显示. 难点:1.控件有父容器和子控件的关系:2.控件事件的添加. 1.控件有父容器和子控件的关系: 可以用绝对坐标在xml文件中先读取子控件再读取父 ...

  5. 总结get和post区别

    参考博文: 浅谈HTTP中Get与Post的区别 1. 数据传递方向: Get是向服务器发索取数据的一种请求,Post是向服务器提交数据的一种请求 (都是请求,并不是一个取一个发) Get:①用于获取 ...

  6. 团队作业7——第二次项目冲刺(Beta版本)-第二篇

    1.工作分工: 团队成员 分工 郭达22120 项目整合,后台代码 刘德培44060 数据库模块 石浩洋22061 前台界面优化 曾繁钦22056 前台界面优化.测试 孙斌22030 后台代码 2.燃 ...

  7. (七)类、超类和子类 ——(多态,动态绑定,final类,类型转换,抽象类)

    java中所有的继承都是公有继承. 在子类中的构造其内可以初始化超类的公有域,但不能初始化超类的私有域. 因此需要在子类构造前的第一行使用super()语句初始化超类的私有域. 如果超类没有不带参数的 ...

  8. ajax与servlet交互(通过JSON),JAVA的arraylist传到前端的方法

    所实现的效果:首先从前端(ajax)传参数给servlet,然后servlet经过处理,把arraylist类型的参数以JSON字符串的形式返回给前端(ajax),然后前端经过解析,把JSON字符串解 ...

  9. SQL 单表分页存储过程和单表多字段排序和任意字段分页存储过程

      第一种:单表多字段排序分页存储过程       --支持单表多字段查询,多字段排序 create PROCEDURE [dbo].[UP_GetByPageFiledOrder] ( ), --表 ...

  10. Python的压缩文件处理 zipfile & tarfile

    本文从以下两个方面, 阐述Python的压缩文件处理方式: 一. zipfile 二. tarfile 一. zipfile 虽然叫zipfile,但是除了zip之外,rar,war,jar这些压缩( ...