• Android


    在最新版本的Android为app提供很好的新API时,也应该继续支持旧版本的Android直到大部分设备已经更新了。这里将要介绍如何在使用最新API带来的优点的同时继续支持老版本。

    Dashboard for Platform Versions 会经常更新来展示每个Android版本的活跃设备,是根据访问Google Play Store的设备数量统计出来的。整体上,在app支持支持最新的版本同时,支持90%以上的活跃设备是一个很好的体验。

    提示:为了在多个Android版本中提供最好的特性和功能,应该在app中使用Android Support Library,它可以让你在旧版本上可以使用多个最新版本的API。

    指定最低和最高API等级

    在AndroidManifest.xml中描述了app的详细信息同时也说明了支持哪些Android版本。特别是<uses-sdk元素中的minSdkVersion和targetSdkVersion属性,他们定义了app能兼容的最低API等级和最高的API等级。

    例如:

    1 <manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
    2     <uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
    3     ...
    4 </manifest>

    当新版的Android发布后,一些属性和行为可能会改变。为了让app在使用新的属性同时保证app适应每个用户的设备,应该设置targetSdkVersion来指定最高支持的Android版本。 

    在Runtime时查看系统版本

    Android在Build常量类中为每个版本地同了一个唯一的编码。在app中使用这些代码来保证那些依赖高版本的API代码只在这些API可用的时候才执行。

    1 private void setUpActionBar() {
    2     // Make sure we're running on Honeycomb or higher to use ActionBar APIs
    3     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
    4         ActionBar actionBar = getActionBar();
    5         actionBar.setDisplayHomeAsUpEnabled(true);
    6     }
    7 }

    注意:在解析XML资源时,Android会忽视当前设备不支持的属性。所以可以很安全的使用新版本才有的新XML属性,不用担心老版本遇到这些代码时会挂掉。例如,如果设置targetSdkVersion="11",app会默认在Android3.0和更高版本中包含ActionBar。然后如果要在action bar中加菜单项,需要在菜单xml资源中设置android:showAsAction="ifRoom"。在多个版本的xml文件中这样做是安全的,因为就老本的Android会直接忽视showAsAction属性(也就是说,不需要单独版本的res/menu-v11/)。 

    使用平台样式和主题

    Android提供了一些用户体验相关的主题可以让app看起来和系统一样。这些主题可以通过manifest文件应用到app中。通过使用自带的样式和主题,app就会和每个Android系统看起来有一样的样式和感觉。

    让activity看起来像一个dialog box:

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

    让activity有一个透明的背景:

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

    应用在/res/values/styles.xml中自定义的样式:

    1 <activity android:theme="@style/CustomTheme">

    要把一个样式应用到整个app中(所有的activity),就在<application>元素中增加android:theme属性:

    1 <application android:theme="@style/CustomTheme">

    更多关于创建和使用样式的信息,查看Style and Themes

  • 相关阅读:
    Uploadify v3.2.1 上传图片并预览
    mybatis批量操作
    500 拦截错误输出
    jsnop
    java目录
    设置360调用样式 IE调用样式
    Spring加载resource时classpath*:与classpath:的区别
    context:annotation-config 与context:component-scan
    Andriod调用http请求
    JDK环境变量
  • 原文地址:https://www.cnblogs.com/fengquanwang/p/3142573.html
Copyright © 2020-2023  润新知