当最新的Android版本号为你的应用提供着非常棒的APIs时。你却要在很多其它的设备更新之前继续支持老的系统版本号。这篇课程怎样在继续支持低版本号的系统的情况下使用新版本号的高级API。

Platform Versions 仪表板展示了最新的活跃设备上执行的Android系统版本号的分布。基于设备訪问Google Play商店的次数。

通常情况下,支持90%的活跃设备同一时候使用最新版本号作为target是一个好习惯。

贴士: 为了在不同的Android版本号上提供最好的特性和功能,你应该在你的应用中使用Android Support Library ,它可以同意你在老版本号的系统上使用一些近期版本号的APIs。

指定最小以及目标API级别


AndroidManifest.xml 文件描写叙述了你的应用的详情以及它支持的系统版本号。 特别的。<use-sdk元素的minSdkVersion 和targetSdkVersion 属性分别指定了应用最低兼容的API级别以及你为应用所设计以及測试的最高API级别。

比如:

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

因为新版的Android系统公布,一些样式和行为肯能改变。为了同意你的应用利用这些改变而且确保你的应用使用每一个用户的设备,你须要将targetSdkVersion 的值设置为最低可用的Android版本号。

在执行时检查系统版本号


Android为每一个平台版本号在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属性不被当前设备支持的情况。因此你能够安全的使用仅仅支持最新版本号的XML属性而不用操心在老版本号上会崩溃。

比如,假设你设置targetSdkVersion="11",你的应用在默认情况下再Android 3.0或更高版本号中包括ActionBar。然后要为action
bar加入菜单项目。你须要在你的menu下的资源文件里设置android:showAsAction="ifRoom" 。在一个跨版本号的XML文件里这样做也是全然没问题的,由于老版本号的Android直接忽略了这个属性(这种话。你就没有必要分开创建一个res/menu-v11/文件夹)。

使用平台的样式和主题


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">

要让主题应用到整个应用中(全部的activity),在 <application>元素中加入android:theme属性:

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

很多其它关于创建和使用主题。请參阅Styles and Themes向导。

Android学习路线(十九)支持不同设备——支持不同(Android)平台版本号的更多相关文章

  1. android 学习随笔十九(对话框、样式、主题、国际化 )

    1.对话框 package com.itheima.dialog; import android.os.Bundle; import android.app.Activity; import andr ...

  2. Android学习(十九)Dialog对话框

    一.什么是Dialog对话框 对话框是当前页面中弹出的一个小窗口,用于显示重要的提示信息,提示用户输入信息,确认信息,或者显示某种状态,如下载进度,退出提示等等.用户需要与对话框进行交互,才能回到原窗 ...

  3. Android学习路线(二十四)ActionBar Fragment运用最佳实践

    转载请注明出处:http://blog.csdn.net/sweetvvck/article/details/38645297 通过前面的几篇博客.大家看到了Google是怎样解释action bar ...

  4. Android学习路线(二十一)运用Fragment构建动态UI——创建一个Fragment

    你能够把fragment看成是activity的模块化部分.它拥有自己的生命周期,接受它自己的输入事件,你能够在activity执行时加入或者删除它(有点像是一个"子activity&quo ...

  5. 学习笔记:CentOS7学习之十九:Linux网络管理技术

    目录 学习笔记:CentOS7学习之十九:Linux网络管理技术 本文用于记录学习体会.心得,兼做笔记使用,方便以后复习总结.内容基本完全参考学神教育教材,图片大多取材自学神教育资料,在此非常感谢MK ...

  6. Android学习路线总结,绝对干货

    title: Android学习路线总结,绝对干货 tags: Android学习路线,Android学习资料,怎么学习android grammar_cjkRuby: true --- 一.前言 不 ...

  7. 十一、Android学习第十天——项目开始(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 十一.Android学习第十天——项目开始 Android知识点的学习告一 ...

  8. Android学习路线指南

    看到这位大牛的博文,不禁得感概,我最近也遇到了很多问题,内心彷徨不堪,转载大牛这篇博文,是为了更好的勉励自己.原文地址在最后面. 前言 看到一篇文章中提到"最近几年国内的初级Android程 ...

  9. (转)Android学习路线总结,绝对干货

    一.前言 不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉好无知.懂的越多的时候你才会发现懂的越少. 如果你的知识是一个圆,当你的圆越大时,圆外面的世界也就越大. ...

  10. python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法

    python3.4学习笔记(十九) 同一台机器同时安装 python2.7 和 python3.4的解决方法 同一台机器同时安装 python2.7 和 python3.4不会冲突.安装在不同目录,然 ...

随机推荐

  1. 888. Fair Candy Swap@python

    Alice and Bob have candy bars of different sizes: A[i] is the size of the i-th bar of candy that Ali ...

  2. [POJ] 2223 Muddy Fields

    Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11490 Accepted: 4270 Description Rain has ...

  3. java+selenium+maven+IntelliJ IDEA 搭建简单的UI自动化测试环境

    1. 用IntelliJ IDEA新建一个maven工程 2. 在pom.xml中添加依赖: <dependency> <groupId>org.seleniumhq.sele ...

  4. (11) openssl req(生成请求证书、私钥和自建CA)

    伪命令req大致有3个功能:生成证书请求文件.验证证书请求文件和创建根CA. 由于openssl req命令选项较多,所以先各举几个例子,再集中给出openssl req的选项说明.若已熟悉opens ...

  5. 搭建Mysql主从复制

    mysql 主从复制流程图 Server version: 10.0.24-MariaDB-7 Ubuntu 16.04 Master 记录二进制文件 导出数据并记录二进制位置 导入数据,设置二进制位 ...

  6. 如何在小程序自定义组件和动态传入数据小demo

    在开发过程中,我们会将页面常用功能抽象为一个组件,这样既方便又可以避免代码冗余.小程序中也提供了自定义组件,了解Vue的伙伴们会发现其实和Vue的组件化很相似.这里用返回顶部功能来说说如何自定义组件, ...

  7. Linux基础之基本命令cat less more sort uniq alias 命令行 bash简单描述(三)

    获取Linux当前最新的内核版本号经常关注www.kernel.org 目录管理:ls cd pwd mkdir rmdir tree 文件管理:touch stat file rm cp mv na ...

  8. 从Excel中读取数据(python-xlrd)

    从Excel中读取数据(python-xlrd) 1.导入模块 import xlrd 2.打开Excel文件读取数据 data = xlrd.open_workbook('excelFile.xls ...

  9. bzoj4568 [Scoi2016]幸运数字 线性基+树链剖分

    A 国共有 n 座城市,这些城市由 n-1 条道路相连,使得任意两座城市可以互达,且路径唯一.每座城市都有一个 幸运数字,以纪念碑的形式矗立在这座城市的正中心,作为城市的象征.一些旅行者希望游览 A ...

  10. Quoit Design(hdu 1007)

    题意:给n个点的坐标,求距离最近的一对点之间距离的一半.第一行是一个数n表示有n个点,接下来n行是n个点的x坐标和y坐标.实数. /* 最小点距离问题 采用分治算法,假设对于1-n的区间,我们已经求出 ...