当最新的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. 深度学总结:skip-gram pytorch实现

    文章目录 skip-gram pytorch 朴素实现网络结构训练过程:使用nn.NLLLoss()batch的准备,为unsupervised,准备数据获取(center,contex)的pair: ...

  2. 纯html+css中实现静态选座位效果技巧(input+label使用小技巧)

    很多时候,我们想通过html+css的方式实现排列在后方的代码在选中状态下,能控制排列在前的代码的样式.那么要怎么实现呢?在这里我就要用1个小技巧来完成. 众所周知的,我们css中的选择器通常只能向下 ...

  3. 【牛客小白月赛6】F 发电 - 树状数组&快速幂&逆元

    题目地址:https://www.nowcoder.com/acm/contest/136/F 树状数组.快速幂.逆元的模板运用: #include<iostream> #include& ...

  4. 杭电 2647 Reward (拓扑排序反着排)

    Description Dandelion's uncle is a boss of a factory. As the spring festival is coming , he wants to ...

  5. linux中的vi命令

    linux的重要的几个命令如下: ①,光标的操作 1,gg,G,nG,:n gg移到文档的开头一行,G移动到最后一行,nG移动到第n行,到指定的行. 2,H,M,L 光标分别移动到这个界面的最上边,中 ...

  6. Linux如何查看CPU负载

    负载(load)是Linux机器的一个重要指标,直观了反应了机器当前的状态.如果机器负载过高,那么对机器的操作将难以进行. linux的负载高,主要是由于CPU使用.内存使用.IO消耗三部分构成.任意 ...

  7. hdu1856 选出更多的孩子

    题目大意: 老师选取2个学生对应的号码,这两人视作朋友,同时朋友的朋友也可以看成自己的朋友. 最后老师选出一个人数最多的朋友圈. 这里学生的人数不大于10^7,所以操作时需要极为注意,操作步数能省则省 ...

  8. Codeforces225E - Unsolvable

    Portal Description 求所有对于方程\[z=\left \lfloor \frac{x}{2} \right \rfloor+y+xy\]不存在正整数解\((x,y)\)的\(z\)中 ...

  9. 数字游戏(codevs 1085)

    题目描述 Description 丁丁最近沉迷于一个数字游戏之中.这个游戏看似简单,但丁丁在研究了许多天之后却发觉原来在简单的规则下想要赢得这个游戏并不那么容易.游戏是这样的,在你面前有一圈整数(一共 ...

  10. .htaccess重写、安全防护、文件访问权限

    今天在<外刊IT评论>上看见了关于.htaccess的使用总结,觉得很不错的,因为wp博客还有其他的php的web服务站点好多都是用.htaccess来管理比如效率以及安全的问题,有必要来 ...