当最新的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. windows10用WMware安装Linux虚拟机详细步骤

    windows10用WMware安装Linux虚拟机详细步骤   一.安装环境 windows10操作系统物理机VMware Workstation 软件(可以在网上下载)CentOS6.9镜像文件( ...

  2. 03pandas

    一.pandas简述 1)pandas是一个开源的,BSD许可的库,为Python编程语言提供高性能,易于使用的数据结构和数据分析工具. 2)numpy能够帮助我们处理数值,但是pandas除了处理数 ...

  3. P2756 网络流解决二分图最大匹配

    P2756 飞行员配对方案问题 题目背景 第二次世界大战时期.. 题目描述 P2756 飞行员配对方案问题 英国皇家空军从沦陷国征募了大量外籍飞行员.由皇家空军派出的每一架飞机都需要配备在航行技能和语 ...

  4. SpringCloud版本介绍和SpringBoot的兼容性

    Spring Cloud是一个由众多独立子项目组成的大型综合项目,每个子项目有不同的发行节奏,都维护着自己的发布版本号.Spring Cloud通过一个资源清单BOM(Bill of Material ...

  5. Django之使用celery异步完成发送验证码

    使用celery的目的:将项目中耗时的操作放入一个新的进程实现 1.安装celery pip install celery 2.在项目的文件夹下创建包celery_tasks用于保存celery异步任 ...

  6. Beego:原生方式使用MySQL

    示例: package controllers import ( "database/sql" "fmt" "github.com/astaxie/b ...

  7. 第一讲:vcs simulation basic

    要求: 1.complie a verilog/systemverilog design using vcs 2.simulate a verilog/systemverilog design vcs ...

  8. (十七)python 3 函数递归

    递归函数 即自己调用自己,递归中可以函数自身调用自身,但是使用时类似于条件循环一样,要有递归的终止条件 优点:使用递归时,常常可以让代码更加简洁 缺点:递归会占用比较多的内存,当递归次数比较多时,性能 ...

  9. LeetCode(22)Generate Parentheses

    题目 Given n pairs of parentheses, write a function to generate all combinations of well-formed parent ...

  10. mysql异常Incorrect string value: '\xE6\xB5\x8B\xE8\xAF\x95' for column 'region_name'

    Incorrect string value: '\xE6\xB5\x8B\xE8\xAF\x95' for column 'region_name' insert语句加的该字段有汉字,乱码造成的 解 ...