Android学习路线(十九)支持不同设备——支持不同(Android)平台版本

当最新的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)平台版本

时间: 2024-08-05 11:14:11

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

Android学习路线(九)为Action Bar添加Style

这里先贴出原文,下次再来翻译::p 原文地址:http://developer.android.com/training/basics/actionbar/styling.html The action bar provides your users a familiar and predictable way to perform actions and navigate your app, but that doesn't mean it needs to look exactly the

Android学习(十九)Dialog对话框

一.什么是Dialog对话框 对话框是当前页面中弹出的一个小窗口,用于显示重要的提示信息,提示用户输入信息,确认信息,或者显示某种状态,如下载进度,退出提示等等.用户需要与对话框进行交互,才能回到原窗口继续执行. 二.几种常见的对话框 1.确认对话框. 2.单选按钮对话框. 3.多选按钮对话框. 4.列表对话框. 5.自定义对话框. 三.Dialog的常用方法 1. AlertDialog.Builder中的create()方法,创建一个dialog. 2.setTitle(),设置标题 3.s

Android学习笔记十九.使用ContentProvider实现数据共享(一)

一.Android如何实现数据共享?  为了在应用程序之间交换数据,Android提供了ContentProvider,ContentProvider是不同应用程序之间进行数据交换的标准API,当一个应用程序需要把自己的数据暴露给其他程序使用时,该应用程序就可通过提供ContentProvider来实现,其他的应用程序就可以通过ContentResolver来操作ContentProvider暴露的数据.一旦某个应用程序通过ContentProvider暴露了自己的数据操作接口,那么不管该应用程

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

通过前面的几篇博客,大家看到了Google是如何解释action bar和fragment以及推荐的用法.俗话说没有demo的博客不是好博客,下面我会介绍一下action bar和fragment在实战中的应用,以及相关demo源码,希望和大家相互交流. 了解过fragment的同学们应该都知道,fragment是android 3.0版本才出现的的,因此如果要在支持android 3.0一下版本的工程中使用fragment的话是需要添加Support Library的.具体如何添加我就不再赘述

Android学习路线(十八)支持不同设备——支持不同的屏幕

Android系统使用两个普通属性:尺寸和密度,来对设备屏幕进行分类.你需要先预测你的应用将会在什么样屏幕的设备上安装,包括屏幕尺寸和密度.这样的话,你就需要提供一些可选的资源类让你的应用在不同屏幕的设备上有最佳的展示. 有四种普遍的尺寸:small, normal, large, xlarge 还有四种普遍的密度:low (ldpi), medium (mdpi), high (hdpi), extra high (xhdpi) 要为不同的屏幕声明不同的布局和图片,你需要让这些可选的资源放在不

Android学习路线(十六)支持不同设备

全世界的Android 设备有很多很多不同的形状和大小.凭借着广泛的设备类型,你的应用程序可以有机会拥有一个庞大的用户群.为了让你的应用在android平台上更成功,你的应用需要适配各种设备类型.有几个重要的差异必须被考虑进去,包括不同的语言,屏幕尺寸以及android平台版本. 这篇课程会教你如何使用基本的平台特性,利用可选的资源以及其他的特性来让你的应用能够在多种Android兼容设备上提供最佳的用户体验,使用一个简单的应用包(APK). 课程 支持不同语言 学习如何通过可选的资源来支持多语

Android学习路线(十七)支持不同设备——支持不同的语言

将UI中的字符串从应用代码中提取出来并存放在额外的文件中是一个好习惯.Android在每个项目中通过一个资源目录让这件事变得很简单. 如果你使用Android SDK工具创建了一个项目,这个工具会在你的项目的顶级目录下创建一个 res/ 目录.在这个目录下有很多子目录用来存放多种类型的资源.同样有一些默认的文件,例如res/values/strings.xml,用来存放字符串. 创建区域目录以及字符串文件 为了支持更多的语言,在res/目录下创建附加的values目录,文件名使用values加上

Android学习路线(二十)运用Fragment构建动态UI

要在Android系统上创建一个动态或者多面板的用户界面,你需要将UI组件以及activity行为封装成模块,让它能够在你的activity中灵活地切换显示与隐藏.你可以使用Fragment类来创建这些模块,它们能够表现得有些像嵌套的activity,它们定义着自己的布局,管理自己的生命周期. 当一个fragment指定了它自己的布局,它可以在activity中和其他的fragment配置为不同的组合,这样就能够为不同的屏幕尺寸来修改你的布局配置(在小屏幕上一次展现一个fragment,而在大屏

Android学习路线(二十二)运用Fragment构建动态UI——构建一个灵活的UI

先占个位置,下次翻译 :p When designing your application to support a wide range of screen sizes, you can reuse your fragments in different layout configurations to optimize the user experience based on the available screen space. For example, on a handset devi