A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 龚正军 中级黑马   /  2013-5-6 11:54  /  2822 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Supporting Different Platform Versions虽然最新版本的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版本。具体地来说,标签里面的minSdkVersion是指你的app所能兼容的最低版本的API,而targetSdkVersion是指你的app是基于哪一个版本的API设计的。
举个例子来说:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >   
<uses-sdk android:minSdkVersion"15" />   
...</manifest>
新版本的Android系统中,一些系统风格和用户习惯可能会改变。为了使你的app充分利用这些变化,并确保你的app适应各种设备的风格,你应该使app中targetSdkVersion的值匹配最新版本的Android系统。
Check System Version at Runtime
Andorid在Build常量类中给每个平台都提供了一个独特的代码。它用于检测当前系统版本是否为最新版本或者更高,如果是的话,就可以使用新系统提供的API;否则就会无法使用。

private void setUpActionBar()
{    // Make sure we're running on Honeycomb or higher to use ActionBar APIs
*  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
*      ActionBar actionBar = getActionBar();        
actionBar.setDisplayHomeAsUpEnabled(true);   
   }
}
注:解析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 android:theme="@android:style/Theme.Dialog">
让你的activity拥有一个透明的背景:

<activity android:theme="@android:style/Theme.Translucent">
申请你要定制的主题,会在/res/values/styles.xml中定义:

<activity android:theme="@style/CustomTheme">
申请一个应用到你的app中所有activities的主题,在标签中添加android:theme属性:

<application android:theme="@style/CustomTheme">
想了解更多关于创建和使用theme的信息请参阅Styles and Themes指南。

1 个回复

倒序浏览
谢谢翻译,受教了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马