安卓手机APP开发__支持不同的平台版本

安卓手机APP开发__支持不同的平台版本

目录

概述

指定最小的和目标的API的级别

检查运行时的系统版本

使用平台的风格和主题


概述

当安卓的最新的版本为你的APP提供了很好的API,你应该继续支持安卓的旧版本,
直到更多的设备已经升级为安卓的新版本了.这里展示了你如何利用最新的API,
同时还能很好地支持安卓的旧版本.

使用安卓工作台的新项目向导,来找到运行各个版本的安卓的活跃设备的分发版本.
这个分发版本是基于访问谷歌应用商店的设备的数量.一般来说,我们推荐支持活跃设备
的数量的90%,同时你的APP的目标版本是最新的版本.

提示:为了跨几个安卓版本,提供最佳的特性和功能,你应该在你的APP中使用
安卓支持库,这允许你使用老版本上的平台的API.

指定最小的和目标的API的级别

安卓的配置文件描述了关于你的APP和APP支持哪些安卓版本的详细的信息.
特别是,最小SDK版本和目标SDK版本这两个属性,是<uses-sdk>标签标识了
API的能兼容的最小级别和APP的设计和测试的目标级别.

例如:

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

当安卓的新版本发布了,一些风格与行为可能会改变.为了允许你的APP利用这些改变,
并且确保你的APP适合每一个用户设备的风格,你应该设置目标SDK的版本来匹配
可用的安卓的最新版本。


检查运行时的系统版本

安卓在构建的常数类中,为每一个平台版本都提供了一个独特的代码。
在你的APP中,使用这些代码来构建保持你的代码依赖于更高的API级别的条件,


Kotlin

private fun setUpActionBar() {// Make sure we're running on Honeycomb or higher to use ActionBar APIsif (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {actionBar.setDisplayHomeAsUpEnabled(true)}
}

注意:当解析XML资源时,安卓忽略了不被当前的设备支持的XML属性。所以你能够
安全地使用XML属性,这些属性是仅被新的版本支持的属性,你不用担心旧版本被破坏。
例如,你设置了目标SDK的版本是11,你的APP包括了由安卓3及以上默认支持的动作条。
为了在动作条上添加菜单项,你需要在你的菜单资源XML文件中设置android:showAsAction="ifRoom"
在一个跨版本的XML文件中,这么做是安全的,因为安卓的旧版本可以很容易地忽略
showAsAction这个属性。

使用平台的风格和主题

安卓提供了用户体验主题,给APP相应的操作系统下的外观和界面皮肤。这些主题
能使用配置文件应用到你的APP中。通过使用内嵌的风格和主题,你的APP能够很自然
地遵循安卓的每一个发布版本的风格和外观了。

为了让你的活动看起来像一个对话框:

<activity android:theme="@android:style/Theme.Dialog">

为了让你的活动有一个透明的背景:

<activity android:theme="@android:style/Theme.Translucent">

为了应用在/res/values/styles.xml文件定义的你自己的定制的主题:

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

在你的整个APP(所有的活动)中,为了应用一个主题,在<application>元素中
添加一个属性android:theme:

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

为了了解更多的关于创建和使用主题的信息,见风格和主题的指导。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/10868.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手写Windows文件路径获取小工具

手写Windows文件路径获取小工具 目的 给Windows右键增加功能&#xff0c;右键任何文件&#xff08;夹&#xff09;显示复制文件路径的扩展。 效果展示 实现思路 右键调用&#xff0c;自身会把文件路径传递给被调用文件&#xff0c;被调用文件内只需将路径参数复制到剪贴板即…

JavaSE面向对象

面向对象&#xff1a; 所谓面向对象它是针对于面向过程来说的&#xff0c;面向过程是在意执行的流程。而面向对象在意的功能。将一系列的过程封装到一个容器中&#xff0c;我们通过操作这个容器即以对象的方式来进行操作就是面向对象。 类&#xff1a; 类是一类事物的总称&a…

个人微信api

简要描述&#xff1a; 退出群聊 请求URL&#xff1a; http://域名地址/quitChatRoom 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/json Authorization&#xff1a;login接口返回 参数&#xff1a; 参数名 必选 类型 …

中国当代最具影响力的人物颜廷利:死神(死亡)并不可怕,可怕的是…

中国当代最具影响力的人物颜廷利&#xff1a;死神&#xff08;死亡&#xff09;并不可怕&#xff0c;可怕的是… 在中国优秀传统文化之中&#xff0c;汉语‘巳’字与‘四’同音&#xff0c;在阿拉伯数字里面&#xff0c;通常用‘4’来表示&#xff1b; 作为汉语‘九’字&#x…

docker(二):Centos安装docker

文章目录 1、安装docker2、启动docker3、验证 官方文档&#xff1a;https://docs.docker.com/engine/install/centos/ 1、安装docker 下载依赖包 yum -y install gcc yum -y install gcc-c yum install -y yum-utils设置仓库 yum-config-manager --add-repo http://mirrors…

Python面试题【python基础部分1-50】

Python面试题【python基础部分1-50】 Python面试题【python基础部分1-50】 Python面试题【python基础部分1-50】 问题&#xff1a;如何在Python中交换两个变量的值&#xff1f; 答案&#xff1a; a, b b, a问题&#xff1a;Python中的列表和元组有什么区别&#xff1f; 答案&…

KAN 笔记

1 Title KAN: Kolmogorov–Arnold Networks&#xff08;Ziming Liu, Yixuan Wang, Sachin Vaidya, Fabian Ruehle, James Halverson, Marin Soljačić, Thomas Y. Hou, Max Tegmark&#xff09;【2024】 2 Conclusion Inspired by the Kolmogorov-Arnold representat…

5.10.3 使用 Transformer 进行端到端对象检测(DETR)

框架的主要成分称为 DEtection TRansformer 或 DETR&#xff0c;是基于集合的全局损失&#xff0c;它通过二分匹配强制进行独特的预测&#xff0c;以及 Transformer 编码器-解码器架构。 DETR 会推理对象与全局图像上下文的关系&#xff0c;以直接并行输出最终的预测集。 1. …

【Linux】-Linux的实用操作:快捷键与软件安装操作、构建软连接、日期时区的设置[4]

目录 一、各类小技巧&#xff08;快捷键&#xff09; 1、ctrl c 强制停止 2、ctrl d 退出或登出 3、历史命令搜索 4、光标移动快捷键 5、清屏 二、软件安装 1、yum命令 2、apt命令 - 扩展&#xff08;ubuntu&#xff09; 三、systemctl命令 四、软连接 1、ln命令…

【字符函数与字符串函数】

文章目录 一、strlen函数1.strlen函数的使用2.strlen函数的模拟实现(1)计算器办法(2)不创建临时变量计数器(3)指针 二、strcpy函数1、strcpy函数的使用2、strcpy函数的模拟实现 三、strcat函数1、strcat函数的使用2、strcat模拟实现3、字符串自己给自己追加&#xff1f; 四、st…

MySQL报错:You can‘t specify target table ‘user‘ for update in FROM clause

一、问题 执行delete语句时&#xff0c;报错“You can’t specify target table ‘user’ for update in FROM clause” 翻译为“不能先select出同一表中的某些值&#xff0c;再update这个表(在同一语句中)”&#xff0c;即delete的目标表不能在其直接子查询中存在&#xff0…

leetcode876-Middle of the Linked List

题目 给你单链表的头结点 head &#xff0c;请你找出并返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[3,4,5] 解释&#xff1a;链表只有一个中间结点&#xff0c;值为 …

QML进阶(十六) 元素的布局和定位

文章目录 定位器Row定位Column定位Grid定位Flow定位定位器嵌套布局管理器RowyLayoutColumnLayoutGridLayoutQML有三种布局定位的方式分别为定位器(Item Positioner)、布局管理器(Item Layout)、锚定位(anchor)。锚定位在之前的内容中已经介绍过了,主要用于元素之间相对位置的锚…

Electron Forge | 跨平台实战详解

简介 上篇 介绍了 Electron 和 Electron Builder 的基本用法&#xff0c;本篇将介绍更常用也更方便的打包工具&#xff0c;Electron Forge 。 Electron Forge 是一个为 Electron 应用的开发、打包和分发而设计的全功能工具集。它整合了多个底层 Electron 工具到一个统一的命令…

01-单片机商业项目编程,从零搭建低功耗系统设计

一、引言 这是关于《单片机商业编程之从零搭建低功耗系统》的第一篇章&#xff0c;个人善忘&#xff0c;平常项目设计当中的一些思路&#xff0c;以前年轻的时候习惯性的录制成视频&#xff0c;也算是当作是自己的笔记&#xff0c;无奈现在喉咙实在扛不住&#xff0c;因此先尝试…

德克萨斯大学奥斯汀分校自然语言处理硕士课程汉化版(第一周) - 自然语言处理介绍和线性分类

自然语言处理介绍和线性分类 1. 自然语言处理介绍2. 线性二分类3. 情感分析和基础特征提取 3.1. 情感分析3.2. 特征提取3.3. 文本预处理 4. 学习的基础-梯度下降算法5. 感知机6. 逻辑回归7. 情感分析8. 感知机和逻辑回归 1. 自然语言处理介绍 自然语言处理的目标是什么 能够解…

(2024,KAN,MLP,可训练激活函数,样条函数,分层函数)Kolmogorov–Arnold 网络

KAN: Kolmogorov–Arnold Networks 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 1. 简介 2. KAN 2.1 KA 表示定理 2.2 KAN 架构 2.3 KAN 的逼近能力和缩放定律 2.4 对于…

国产操作系统下使用dpkg命令管理软件包 _ 统信 _ 麒麟 _ 中科方德

往期好文&#xff1a;国产操作系统下Chrome的命令行使用 | 统信 | 麒麟 Hello&#xff0c;大家好啊&#xff01;在Linux系统中&#xff0c;dpkg是Debian包管理系统的基础命令工具&#xff0c;它允许用户安装、卸载、查询和管理软件包。在国产操作系统如统信UOS和麒麟KOS、中科方…

字节码基础

基本概念 java中的字节码&#xff0c;英文bytecode。是java代码编译后的中间代码格式。JVM需要读取并解析字节码才能执行相应的任务。java字节码是JVM的指令集。JVM加载字节码格式的class文件。校验之后通过JIT编译器转换成本机机器代码执行。 java字节码简介 1、java byteco…

阿里云部署ChatGLM-6B及ptuning微调教程

一、模型部署 1.进入阿里云人工智能平台PAI。 2.申请免费试用。 3.打开交互式建模 PAI-DSW。 4.新建实例。 5.填写配置。 6.实例准备完成后点击打开。 7.打开实例后点击Teminal。 8.在Teminal中依次输入以下命令并执行。 apt-get update apt-get install git-lfs git lfs ins…