Android版本日新月异,几乎每年都有一到两个新的版本发布,在此整理一下Android各个版本的特性。
KitKat
Api Level 19 Android 4.4 有以下个人觉得经常用的特性 详细见官方文档
READ_EXTERNAL_STORAGE权限改动
这个版本最早开始引入Android的安全机制,权限申请功能。官方文档是这么说的,在这个版本中,无法读取外部存储空间上的共享文件,manifest中申请READ_EXTERNAL_STORAGE权限,否则无法访问
getExtrenalStoragePublicDirectory()
返回目录中的文件,但是如果只需要访问
getExternalFilesDir()
提供的应用持有目录就不需要这个权限
WebView 改动
官方声明在这个版本WebView
底层代码和相关的api 升级为基于现代chromium的源代码,就是说在这个版本后webView的性能得到大幅度提升,所以说嵌入H5过多的应用可以将targetSdkVersion更改到18 来测试对于老手机的兼容性
短信提供程序
个人觉得这个功能主要是用在验证码比较多的应用中,像贷款,和金融类应用,经常需要一堆验证码,可以考虑接一个这个自动获取验证码
telephony 内容提供程序允许应用读取设备的短息和彩信包含已经接受、起草、发送、挂起等操作的短信。 通过侦听SMS_RECEIVED_ACTION 来获取短信里的内容。
红外线发射器
这个功能主要是我之前写过一个遥控器的应用去搞公司那个牛掰的空调。
这个功能要求设备必须有红外线发射器才可以 可以通过
hasIrEmitter() //获取设备是否附带红外发射器
<uses-feature> "android.hardware.consumerir"</uses-feature>
ConsumerIdManager consumerManager = (ConsumerIdManager)Context.getSystemService(Context.CONSUMER_IR_SERVICE)
来获取参数,然后通过
getCarrierFrequencies() //查询设备支持的红外线频率
transmit()//发射信号
多媒体
我没怎么开发过多媒体应用,所以这里感觉写的挺牛逼的,但是没怎么实践过
动画和图形
场景和转场动画
在这里说一下转场动画这个东西,当我们需要转场的时候步骤一般是这样的:
1、制定包含您要更改的UI组件的ViewGroup
2、指定表示变更的最终结果的布局(下一个场景)
3、指定应添加布局变更动画的转场类型
4、转场
您可以使用 Scene对象完成第 1 步和第 2 步。
Scene` 包含描述执行转场所必需的布局属性的元数据,其中包括场景的父视图和场景布局。您可以使用类构造函数或静态方法 getSceneForLayout()创建 Scene。
然后,您必须使用 TransitionManager 完成第 3 步和第 4 步。其中一个方法是将您的 Scene 传递到静态方法 go()。这样可在当前布局中找到场景的父视图,并在子视图上执行转场,以实现 Scene 定义的布局。
或者,您根本不需要创建 Scene`对象,而是改为调用 beginDelayedTransition(),指定一个包含您要更改的视图的 ViewGroup。然后,添加、移除或重新配置目标视图。在系统根据需要进行更改后,转场开始以动画方式呈现所有受影响的视图。
要进行其他控制,您可以使用项目 res/transition/
目录中的 XML 文件定义应在预定义的场景间发生的转场集。在 <transitionManager>
元素内部,指定一个或多个 <transition>
标记,每个标记均指定一个场景(引用布局文件)以及进入和/或退出该场景时将应用的转场。然后,使用 inflateTransitionManager() 扩展此转场集。使用返回的 TransitionManager 通过 transitionTo() 执行每个转场,传递一个由 <transition>
标记表示的 Scene。您还可以使用 TransitionManager API 以编程方式定义转场集。
指定转场时,您可以使用 Transition 的子类(如 Fade 和 ChangeBounds`)定义的多个预定义类型。如果您不指定转场类型,系统会默认使用 AutoTransition,其根据需要自动消失、移动和重新调整视图。此外,您也可以通过扩展其中的任何一个类来创建自定义转场,以执行您需要的动画。自定义转场可以跟踪您想要跟踪的任何属性变更,并基于这些变更创建您需要的任何动画。例如,您可以提供 Transition的子类,用于侦听对视图的“旋转”属性进行的变更,然后以动画方式呈现所有变更。
如需了解详细信息,请参阅 TransitionManager 文档。
用户界面模块
沉浸式全屏
要为您的应用提供填充整个屏幕的布局,适用于 setSystemUiVisibility() 的新标记 SYSTEM_UI_FLAG_IMMERSIVE(与 SYSTEM_UI_FLAG_HIDE_NAVIGATION 结合使用时)将启用新的沉浸式全屏模式。在启用沉浸式全屏模式后,您的 Activity 将继续接收所有触摸事件。用户可以沿着系统状态栏正常出现的区域向内滑动来显示系统状态栏。这将清除 SYSTEM_UI_FLAG_HIDE_NAVIGATION 标记(如果应用了 SYSTEM_UI_FLAG_FULLSCREEN标记,也会清除该标记),因此系统状态栏保持可见状态。但是,如果您想要系统状态栏在片刻后再次隐藏,可以改用 SYSTEM_UI_FLAG_IMMERSIVE_STICKY 标记。
透明系统状态栏
现在,您可以使用新主题背景 Theme.Holo.NoActionBar.TranslucentDecor 和 Theme.Holo.Light.NoActionBar.TranslucentDecor 将系统状态栏设置为部分透明。通过启用透明系统状态栏,您的布局将填充系统状态栏后面的区域,因此,您也必须为不应被系统状态栏覆盖的布局部分启用 fitsSystemWindows。
如果您要创建自定义主题背景,则将其中某个主题背景设置为父主题背景,或在您的主题背景中添加 windowTranslucentNavigation 和 windowTranslucentStatus 样式属性
增强的通知侦听器
Android 4.3 添加了 NotificationListenerService API,从而允许应用在系统发布新通知后接收有关新通知的信息。在 Android 4.4 中,通知侦听器可以检索通知的附加元数据,并填写有关通知操作的详细信息:
新增的 Notification.extras字段包含一个 Bundle,以向您的通知生成器提供 EXTRA_TITLE和 EXTRA_PICTURE等附加元数据。新增的 Notification.Action 类定义附加到通知的操作的特性,您可以从新的 actions 字段中检索这些特性。