热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【AndroidDevelopersTraining】13.支持不同

注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好。


注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好。


原文链接:
http://developer.android.com/training/basics/supporting-devices/platforms.html



尽管最新版本的Android系统为你的应用提供了大量的API,你仍然应该继续支持较老版本的Android,直到更多的设备更新了系统。这堂课将向你展示应该如何利用新API的同时,还可以继续支持过去的版本。



Platform Versions
中的面板中,会定期地更新所有活跃设备所使用的系统版本的比例,这些信息来自于访问了谷歌应用市场(Google Store Play)的设备。当将你的应用定位于最新版本的Android系统时,支持90%左右的活跃设备是一个值得提倡的好习惯。




Tip:



为了在多个Android版本中都能得到最佳的特性和功能,你应该在你的应用中使用

Android Support Library

,这可以允许你在较旧的版本中,使用一些最近平台的API。

 




一). 指定最低和目标API Level




AndroidManifest.xml
文件中,描述了你的应用的细节,和它所支持的Android版本。特别地,

标签中的“

minSdkVersion

”表示了你的应用所能兼容的最低系统版本,而“

targetSdkVersion

”属性字段表示了你的应用是基于哪个版本(最高的)系统进行开发和测试的。




例如:



<


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 Level的代码仅在系统负荷要求的情况下才会被运行。



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


);
}
}





Note:


当解析XML资源文件时,Android会将当前设备部支持的XML属性字段忽略。所以你可以放心地使用只在较新的系统版本中才支持的属性字段,而不必担心旧版本当遇到这些字段时应用汇崩溃。例如,如果你设置:“

targetSdkVersion=11

”,你的应用在Android 3.0或更高的系统平台上使用了默认的Action Bar。然后为了给Action Bar添加菜单项,你需要在你的菜单(menu)XML资源文件中设置:“

android:showAsAction=ifRoom

”。即使是跨版本情况,这样做也是安全的,因为旧版本的Android会直接忽略“


showAsAction

”这个属性字段。(所以,你不需要类似于“

res/menu-v11/

”这样的文件)




 




三). 使用平台的风格和主题



Andorid提供了和基本操作系统的外观相切合的用户主题。这些主题可以通过清单文件应用到你的系统当中。通过使用这些内置的风格和主题,你的应用可以和新发布的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"


>



为了将一个主题应用到你的整个App中,在





标签下添加“

android:theme

”属性字段:





<


application


android:theme


="@style/CustomTheme"


>




阅读

Styles and Themes

获得更多关于创建和使用主题的信息。



【Android Developers Training】 13. 支持不同平台版本




推荐阅读
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 近期在研究逆向工程,因此尝试了一些CTF题目。通过合天网络安全实验室的CTF实战演练平台(http://www.hetianlab.com/CTFrace.html),我对Linux逆向工程的掌握还不够深入,因此暂时跳过了RE300题目。首先从逆向100开始,将文件后缀名修改为.apk进行初步分析。这一过程不仅帮助我熟悉了基本的逆向技巧,还加深了对Android应用结构的理解。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 微信公众号推送模板40036问题
    返回码错误码描述说明40001invalidcredential不合法的调用凭证40002invalidgrant_type不合法的grant_type40003invalidop ... [详细]
  • 本文详细解析了Autofac在高级应用场景中的具体实现,特别是如何通过注册泛型接口的类来优化依赖注入。示例代码展示了如何使用 `builder.RegisterAssemblyTypes` 方法,结合 `typeof(IEventHandler).Assembly` 和 `Where` 过滤条件,动态注册所有符合条件的类,从而简化配置并提高代码的可维护性。此外,文章还探讨了这一方法在复杂系统中的实际应用及其优势。 ... [详细]
  • .NET Core 托管服务优化与实践
    在.NET Core应用中,托管服务的形式主要分为进程内托管(InProcess)和进程外托管(OutOfProcess)。这两种托管方式各有优缺点,本文将深入探讨它们的特点,并结合实际案例,介绍如何根据具体需求选择合适的托管模式,以实现性能优化和资源利用的最大化。此外,文章还将分享一些实用的配置技巧和最佳实践,帮助开发者提升应用的稳定性和可维护性。 ... [详细]
  • 在处理大规模数据数组时,优化分页组件对于提高页面加载速度和用户体验至关重要。本文探讨了如何通过高效的分页策略,减少数据渲染的负担,提升应用性能。具体方法包括懒加载、虚拟滚动和数据预取等技术,这些技术能够显著降低内存占用和提升响应速度。通过实际案例分析,展示了这些优化措施的有效性和可行性。 ... [详细]
  • 在探讨如何在Android的TextView中实现多彩文字与多样化字体效果时,本文提供了一种不依赖HTML技术的解决方案。通过使用SpannableString和相关的Span类,开发者可以轻松地为文本添加丰富的样式和颜色,从而提升用户体验。文章详细介绍了实现过程中的关键步骤和技术细节,帮助开发者快速掌握这一技巧。 ... [详细]
  • 全面解析JavaScript代码注释技巧与标准规范
    在Web前端开发中,JavaScript代码的可读性和维护性至关重要。本文将详细介绍如何有效地使用注释来提高代码的可读性,并探讨JavaScript代码注释的最佳实践和标准规范。通过合理的注释,开发者可以更好地理解和维护复杂的代码逻辑,提升团队协作效率。 ... [详细]
author-avatar
阿蕓
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有