虽然最新版本的Android通常会为你的app提供丰富的API,但是,在更多的设备得到系统升级之前,你还是应该让你的app继续支持旧的系统。文章将向你展示如何在充分利用最新API的同时,继续支持旧的Android版本。 通过统计Android设备访问Google Play Store的数量,平台版本面板(Platform Versions)会定期更新数据以展示Android设备运行各个版本系统的分布情况。一般来说,惯用的做法是让你的app支持9成的机型,同时针对新系统制作对应的版本。
提示:为了提供最好的特性以及跨多个Android版本的功能,在你的app中,你应该使用Android的支持库(Android Support Library),它允许你使用最近几个Android版本中的API。
Specify Minimum and Target API Levels
AndroidManifest.xml描述了有关你的app的详细信息,并同时确定了它支持的Android版本。具体地来说,<uses-sdk/>标签里面的minSdkVersion是指你的app所能兼容的最低版本的API,而targetSdkVersion是指你的app是基于哪一个版本的API设计的。
举个例子来说:
Check System Version at Runtime
Andorid在Build常量类中给每个平台都提供了一个独特的代码。它用于检测当前系统版本是否为最新版本或者更高,如果是的话,就可以使用新系统提供的API;否则就会无法使用。
注:解析xml资源时,Android会忽略掉当前设备不支持的xml的属性。这样的话,在你的app中,你就可以放心的加入那些只有新系统才会支持的xml属性,而不用担心旧系统遇到这些代码时会出现错误。举个例子来说,如果你将app中的targetSdkVersion的值设定为11,它会在Android 3.0或者更高版本系统中包含ActionBar这个属性。为了将菜单选项添加到ActionBar中,你需要在菜单的xml中设定android:showAsAction="ifRoom"。在跨版本的xml文件中,这样的做法是安全的,原因是老版Android会忽略掉showAsAction属性(也就是说,在res/menu-v11/目录下不需要一个单独的版本)。
Use Platform Styles and Themes
Android给用户提供了可供体验的主体效果,这些由底层操作系统带来的视觉体验会表现在app上。通过使用这些内置的风格和主题,你的app就会向用户展现最新版本的Android体验。
让你的activity看起来像一个对话框:
让你的activity拥有一个透明的背景:
申请你要定制的主题,会在/res/values/styles.xml中定义:
申请一个应用到你的app中所有activities的主题,在<application>标签中添加android:theme属性: