备注:之前Android入门学习的书籍使用的是杨丰盛的《Android应用开发揭秘》,这本书是基于Android 2.2API的,目前Android已经到4.4了,更新了很多的API,也增加了很多的新组件,一直没有系统的学习过。现在开始这个“完善Android学习”系列,将2.2以后的新知识做一个概览。概览来自:http://developer.android.com/about/versions/android-3.1.html

Android3.1平台(HONEYCOMB_MR1)。

API Overview

Animation framework

1)New ViewPorpertyAnimator class

新的ViewPropertyAnimatior类为开发者提供了一为View选中属性施加动画的方便途径,这个类自动化并且优化了属性的动画并且使得在一个View上同时发生的动画更加容易管理。使用该类是非常直接的,为了给一个View的属性施加动画,需要调用animate()方法为该View构造一个ViewPropertyAnimatior实例,使用它提供的方法指明需要对哪一个属性进行动画以及如何动画,举个例子,将View变成透明,就使用alpha(0),该对象负责配置底层的Animator类并且启动渲染动画;

2)Animation bacjground color:新的getBackgroundColor()和新setBackgroundColor(int)方法使得开发者可以获取动画的背景颜色,这只有在window动画中有作用,目前背景颜色必须为黑色,可以有任何的alpha数值;

3)Getting animated fraction from ViewAnimator

新方法getAnimateFraction()可以让你获取当前的动画片段——刚刚过去的动画帧;

UI Framework

1)Forced rendering of a layer:新方法buildLayer()让应用强制要求一个View的layer被创建,然后View立刻渲染到layer上,举个例子,一个应用可以在开始动画之前使用这个方法来强制将一个View渲染到layer上,这样就可以避免丢帧;

2)Getting a calendar view from a DatePicker:新的方法getCalendarView()让开发者可以从DatePicker实例中获取一个CalendarView;

3)Getting callbacks when views are detached:新的监听器View.OnAttachStateChangeListener让开发者在View添加或者移除的时候可以收到一个回调,可以使用addOnAttachStateChanegListener()来添加一个监听器。

4)Fragment breadcrumb listener,new onInflate() signature:onInflate(attrs, savedInstanceState)方法被废弃,使用新方法onInflate(activity,attrs, savedInstanceState)

5)Display search result in new tab:ACTION_WEB_SEARCH的EXTRA_NEW_SEARCH数据关键字可以让你在新的浏览器tab中打开一个搜索,而不是在本tab中;

6)Drawable text cursor:你现在可以使用新的资源属性textCursorDrawable指定一个图片资源文件作为文本光标;

Graphics

1)Helpers for managing bitmaps

    setHasAlpha(boolean):用来指示是不是一个Bitmap中的所有的像素都有一个透明度值,诸如(RGB_565)的设置,这个调用是被忽略的,因为它不支持像素的alpha值,这是一个绘制提示,因为在一些情况中一个不透明的bitmap可以获得一个更快的绘制速度;

    getByteCount():获得Bitmap的大小,单位:bytes

    getGenerateId():让一个应用查看一个Bitmap是不是进行了改动;

    sameAs(android.graphics.Bitmap):查看一个bitmap是不是和当前的bitmap在维度,配置以及像素数据上一样。

2)Setting camera location and rotation:Camera添加了两个新的方法rotate()和setLocation()来控制相机的位置。

Download Manager

1)Handling of completed downloads:a)应用现在可以初始化一个下载,只有当完成的时候才会提醒用户,为了使用这种类型的下载,应用需要传递一个VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION给请求对象的方法setNotifcationVisibility();b)新方法addCompleteDownload()让应用可以添加一个文件到下载数据库,以便于被下载应用管理;

2)Show downloads sorted by size:应用可以打开下载应用,按照下载文件的大小排序的模式查看,只要添加一个新的extra:INTENT_EXTRAS_SORT_BY_SIZE到一个ACTION_VIEW_DOWNLOADS intent;

Media

新的音频格式:媒体框架添加了对raw ADTs AAC的内建支持;

Launch controls on stopped applications

从Android3.1开始,系统的应用管理器开始追踪处于停止状态的应用并且提供方法给后台进程和其余应用启动它们。

注意到应用的停止状态和Activity的停止状态不一样,系统分开处理这两种情况。平台定义了两种新的Intent flags来让intent发送者指明该Intent是否要激活处于停止状态的应用的组件:

1)FLAG_INCLUDE_STOPPED_PACKAGES——将处于停止状态的应用的intent filter包含进来;

2)FLAG_EXCLUDE_STOPPED_PACKAGES——将处于停止状态的应用的intent filter不包含进来(从潜在的目标列表中移除那些停止的应用)

当没有或者两中FLAG都在一个intent中定义的时候,默认行为就是包括。

注意到系统给所有的广播都添加了FLAG_EXCLUDE_STOPPED_PACKAGES标签,它这样做来避免来自后台服务的广播无意间或者非必要的打开停止应用的组件。一个后台服务或者程序可以覆写该行为,加入FLAG_INCLUDE_STOPPED_PACKAGES。

应用在首次安装并且没有被打开的时候或者被用户手动停止的时候处于停止状态。

Notification of application first launch and upgrade

这个平台为第一次打开应用可应用升级提供了优化的通知提醒:

1)ACTION_PACKAGE_FIRST_LAUNCH:当一个应用第一次被启动的时候,发送给它,数据中包含包的名字;

2)ACTION_MY_PACKAGE_REPLACED:在一个新的版本被安装以后,通知一个应用它被更新了。这只有在应用被替代的时候才会收到,它没有包含任何的额外数据,为了收到它,为此声明一个intent filter。只有在应用不在停止状态的时候更新,intent才会被直接发送给该application;

Core utilities

1)LRU cache:新的LruCache类:让你的应用受益于高效的缓存,应用程序可以使用这个类减少计算或者从网上下载数据的时间。LruCache是一个维护者有限数目的值得强引用的缓存。每次一个值被访问,它就被移到队列切面,当缓存满了,队列最后的那个值就会被移除,然后可能被当做垃圾回收;

2)File descriptor as int:现在可以使用新方法getFd()或者detachFd()从一个ParcelFileDescriptor来获得一个文件描述符整数;

WebKit

1)File scheme cookies:

The CookieManager now supports cookies that use the file: URI scheme. You can usesetAcceptFileSchemeCookies() to enable/disable support for file scheme cookies, before constructing an instance of WebView or CookieManager. In a CookieManager instance, you can check whether file scheme cookies is enabled by calling allowFileSchemeCookies().

2)Notification of login request:

To support the browser autologin features introduced in Android 3.0, the new method onReceivedLoginRequest()notifies the host application that an autologin request for the user was processed.

Browser

浏览器增加了以下新特征来支持web应用:

1)支持视频播放,需要硬件加速支持;

2)Layer support for fixed position elements for all sites (mobile and desktop).

New Feature constants

这个版本添加了两个新的硬件特征约束:

1)android.hardware.usb.acessory:应用使用USB API和外围硬件设备互联,作为HOST出现;

2)android.hardware.usb.host:应用使用USB API和外围硬件设备互联,作为ACCESSORY出现;

【Android】完善Android学习(四:API 3.1)的更多相关文章

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

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

  2. 【Android】完善Android学习(一:API 2.3.3)

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

  3. Android JNI学习(四)——JNI的常用方法的中文API

    本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...

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

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

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

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

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

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

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

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

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

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

  9. android学习四(Activity的生命周期)

    要学好活动(Activity).就必需要了解android中Activity的声明周期.灵活的使用生命周期.能够开发出更好的程序,在android中是使用任务来管理活动的,一个任务就是一组存放在栈里的 ...

随机推荐

  1. Python3 小工具-僵尸扫描

    僵尸机的条件: 1.足够闲置,不与其他机器进行通讯 2.IPID必须是递增的,不然无法判断端口是否开放 本实验僵尸机选择的是Windows2003 from scapy.all import * im ...

  2. C Program基础-二维数组

    一维数组可以看作一行连续的数据,只有一个下标.C语言允许构造二维数组甚至多维数组,在实际问题中有时候常常需要用到二维数组(例如数学上的矩阵),二维数组有两个下标,以确定某个元素在数组中的位置. (一) ...

  3. C Program基础-宏定义

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

  4. DDB与DIB

    DB与DIB的区别是什么?觉得书上介绍的有点抽象.不容易理解.他们两者之间的区别的“物理意义” [“现实意义”]——姑且这么叫吧,呵呵!被这个问题困扰了很久,所以今天决定好好查资料总结一下,把它彻底搞 ...

  5. Unity3d学习日记(二)

      跟着教程做让背景可以滚动起来并添加了背景的粒子特效,加入了敌机.   ctrl攻击,↑↓←→移动,Game Over后按R重新开始游戏.   Space Shooter游戏地址:http://ya ...

  6. node 第一天

    在开发的过程中,几乎不可能一次性就能写出毫无破绽的程序,断点调试代码是一个普遍的需求. 作为前端开发工程师,以往我们开发的JavaScript程序都运行在浏览器端,利用Chrome提供的开发者工具就可 ...

  7. 在linux下如何显示隐藏文件

    #显示所有文件(包含隐藏文件)ls -a #只显示隐藏文件l.或者ls -d .* #在XWindow的KDE桌面中在"查看(View)"菜单里选"显示隐藏文件(Show ...

  8. Vim新手节省时间的10多个小技巧

    Vim新手节省时间的10多个小技巧 Vim 是很多开发者的首选编辑器,通过设置正确的命令和快捷方式,它可以帮你更快的完成工作.这篇文章我们为 Vim 新手提供一些快捷键等方面的小技巧,帮你提升工作效率 ...

  9. C#中的unsafe

    为了保持类型安全性,默认情况下,C# 不支持指针算法. 但是,通过使用 unsafe 关键字,可以定义可在其中使用指针的不安全上下文. 有关指针的详细信息,请参阅主题指针类型. 备注 在公共语言运行时 ...

  10. 当提交的表单类型为multipart/form-data时 后台的dopost则不能使用 setCharset来进行解码了 需要单独对字段使用 原始的new String(req.name("ISO-8859-1"),"utf-8")形式解码了

    当提交的表单类型为multipart/form-data时 后台的dopost则不能使用 setCharset来进行解码了 需要单独对字段使用 原始的new String(req.name(" ...