当最新发布的android平台为你的应用提供非常棒的api的同时,你也应该确保你的应用能够在那些依然使用着旧版本的android设备上正常运行,直到这些用户更换新手机为止。这节课,我们将教你如何将最新的api使用到旧版本上。

       根据设备访问谷歌商店的统计表格的定期更新上可以看到,每个设备运行的版本以及它们的分布。一般来说一个优秀的app需要支持将近90%的安卓设备。


       提示:为了能够在各个版本的android设备上提供可靠的性能,开发者必须在其自己的app中添加 Android Support Library。


1、Specify Minimum and Target API Levels(指定最小以及目标api等级)     

     在AndroidManifest.xml文件中具体描述了开发者的app的支持版本




<manifestxmlns:android="http://schemas.android.com/apk/res/android" ... >
    <uses-sdkandroid:minSdkVersion="4"android:targetSdkVersion="15"/>
    ...
</manifest>

2、Check System Version at Runtime(在运行时检查系统版本)   


    android在编译class时会为每个版本的平台提供一个独一无二的代码,使用这些代码可以确保高等级的api只能运行在高等级的版本中。

privatevoid 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);
    }
}


    注意 :android在解析xml资源的时候会忽略xml属性是否能够被当前设备版本所支持。因此你可以放心的使用这些只在最新的版本中才支持的xml属性而不必担心其会出错。例如,你设置了targetSdkVersion=‘11’,你的app包含了ActionBar这类默认在android 3.0或更高版本。你只需要设置android:showAsAction="ifRoom"showAsAction,而不必将xml分割成各个版本类似于 res/menu-v11/



3、 Use Platform Styles and Themes(使用平台自带的样式和主题)

   


     android提供了可以用户自己定制的主题。这类主题需要在清单文件中添加。

     让你的activity看起来像一个对话框。

<activityandroid:theme="@android:style/Theme.Dialog">


      确保你的activity有个透明的背景。

<activityandroid:theme="@android:style/Theme.Translucent">


    将你的自定义theme定义在  

/res/values/styles.xml

:

<activityandroid:theme="@style/CustomTheme">

   

将你的自定义theme应用到整个app,添加 android:theme

<applicationandroid:theme="@style/CustomTheme">