Android 14重要更新预览

Android 14重要更新预览

国际化

Android 14 在 Android 13 的基础上进一步扩展了按应用设定语言功能,提供了一些额外的功能:

  1. 自动生成应用的 localeConfig:从 Android Studio Giraffe Canary 7 和 AGP 8.1.0-alpha07 开始,您可以配置应用以自动支持各应用语言偏好设定。Android Gradle 插件将根据您的项目资源生成 LocaleConfig 文件,并自动在最终清单文件中添加对该文件的引用,无需手动创建或更新。AGP 使用应用模块的资源以及任何库模块依赖项来确定要在 LocaleConfig 文件中添加的语言区域。

  2. 动态更新应用的 localeConfig:使用 LocaleManager 中的 setOverrideLocaleConfig() getOverrideLocaleConfig() 方法,您可以在设备的系统设置中动态更新应用的受支持语言列表。这种灵活性允许您按区域自定义支持的语言列表、进行 A/B 实验,或者如果您的应用通过服务器端推送进行本地化,则可以提供更新后的语言区域列表。

  3. 输入法 (IME) 的应用语言可见性:IME 可以通过 getApplicationLocales() 方法查看当前应用的语言,并将 IME 语言与该语言进行匹配。

  4. 语法变化 API:Android 14 引入了语法变化 API,帮助您针对区分性别的语言构建以用户为中心的界面。不同性别的语法在许多语言中是有区别的,正确反映用户的性别在用户体验和参与度上有积极的影响。

  5. 地区偏好设置:用户可以通过地区偏好设置对温度单位、一周的第一天和编号系统进行个性化设置。这些偏好设置在 Android 设置菜单中集中显示,并在备份和恢复设备后保持不变。应用可以通过多个 API 和 intent(例如 getTemperatureUnitgetFirstDayOfWeek)访问用户偏好设置,并根据用户的设置调整其显示信息的方式。同时,您还可以注册 BroadcastReceiver 来处理地区偏好设置的更改。

如需找到这些设置,请打开“设置”应用,然后依次前往系统 > 语言和输入法 > 地区偏好设置

无障碍

Android 14 支持非线性字体放大高达 200%,为弱视用户提供了更多无障碍功能选项,符合网络内容无障碍指南 (WCAG)。

非线性放大曲线的使用避免了屏幕上大文本元素过度放大的问题,因此大号文本的放大比例不会与较小的文本相同。这种放大策略保持了不同大小元素之间的比例层次结构,并缓解了线性放大带来的问题,如文本截断或非常大的文本难以阅读。

使用非线性字体放大测试应用
在设备的无障碍设置中启用最大字号,以测试应用。
如果应用使用放大像素 (sp) 单位定义文本大小,系统将自动应用这些额外选项和放大改进。但仍建议在启用最大字号 (200%) 的情况下进行界面测试,确保应用正确应用字号,且在适应较大字号时不影响易用性。

启用 200% 字号的步骤:

  1. 打开“设置”应用,然后前往无障碍 > 显示大小和文字。
  2. 在字号选项中,点击加号 (+) 图标,直到启用最大字号设置。

在应用中使用放大像素 (sp) 单位
始终以 sp 为单位指定文本大小,这样 Android 可以应用用户的首选文本大小并进行适当的缩放。

不要为内边距或视图高度使用 sp 单位,因为非线性字体放大可能导致不成比例的效果。

使用 TypedValue.applyDimension() 方法将 sp 单位转换为像素,并使用 TypedValue.deriveDimension() 方法将像素转换为 sp。这些方法会自动应用适当的非线性放大曲线。

避免使用 Configuration.fontScaleDisplayMetrics.scaledDensity 进行硬编码,因为字体放大现在是非线性的,这些字段不再准确。

用户体验

Android 14 在无障碍方面支持非线性字体放大高达 200%,为弱视用户提供更多选项,符合网络内容无障碍指南 (WCAG)。非线性放大避免了大文本元素过度放大,保持了大小元素之间的比例层次结构,改进了文本放大效果。

在应用测试中,可以在设备的无障碍设置中启用最大字号,测试应用是否正确应用字号,并适应较大字号而不影响易用性。

对于开发者,建议始终使用放大像素 (sp) 单位来定义文本大小,避免将内边距或视图高度使用 sp 单位。可以使用 TypedValue.applyDimension() 方法将 sp 转换为像素,并使用 TypedValue.deriveDimension() 方法将像素转换为 sp。避免使用 Configuration.fontScaleDisplayMetrics.scaledDensity 进行硬编码。

Android 14 还提供了更多排名信号来确定直接共享目标的排名,为用户提供更实用的结果。还支持内置和自定义预测性返回动画,以及针对应用商店的改进,包含多个新的 PackageInstaller API,可帮助应用商店改善用户体验。

Android 14 引入了几个重要的功能改进:

  1. 下载之前请求批准安装:通过requestUserPreapproval()方法,应用商店可以在提交安装会话之前请求用户批准安装,推迟下载操作直到用户批准。这样可以在后台下载和安装应用,不干扰用户。

  2. 承担未来更新的责任:使用 setRequestUpdateOwnership() 方法,安装程序可以表明将负责将被安装的应用未来的更新。这有助于确保用户只收到来自预期应用商店的更新。

  3. 在干扰性更低的情况下更新应用:通过 InstallConstraints API,应用商店可以确保应用更新在适当的时机进行,避免在用户正在使用应用时进行更新,防止中断用户操作。

  4. 无缝安装可选拆分:通过 setDontKillApp() 方法,安装程序可以指明在安装新的拆分项时应用的运行进程不应终止,实现用户在使用应用时无缝安装新功能。

  5. 检测用户截取设备屏幕截图:引入了可保护隐私的屏幕截图检测 API,应用可以按 activity 注册回调,当用户截取屏幕截图时,系统会通知应用。注意:回调未提供实际屏幕截图的图片,截取后的屏幕内容由应用决定。

这些功能改进使得 Android 14 在安装、更新、无缝安装和屏幕截图检测方面更加灵活、智能和用户友好。

图形

从 Android 14 开始,Path API 支持查询和插值功能,使得对路径对象的内部内容有了更多的了解和操作。
如需创建 Path,您可以调用 moveTo()lineTo() cubicTo() 等方法来添加路径片段。
查询功能:
现在可以使用 Path.getPathIterator API 获取 PathIterator 对象,通过遍历 PathIterator 对象的方法,可以逐个查询路径的片段和相关数据。这样可以在创建路径时保留并获取路径的详细信息。

val path = Path().apply {moveTo(1.0f, 1.0f)lineTo(2.0f, 2.0f)close()
}
val pathIterator = path.pathIterator

插值功能:
Android 14 为 Path 提供了 interpolate() 方法,用于在两个具有相同内部结构的路径之间进行插值。

for (segment in pathIterator) {println("segment: ${segment.verb}, ${segment.points}")
}

这可以方便地实现动画或形状变形的效果。使用 interpolate() 方法,可以在两个路径之间创建新的 Path,并通过插值系数控制形状的变化程度。

val interpolatedResult = Path()
if (path.isInterpolatable(otherPath)) {path.interpolate(otherPath, .5f, interpolatedResult)
}

总的来说,这些功能的引入使得 Path API 在创建、操作和控制矢量图形方面更加灵活和便捷。Jetpack graphics-path 库也为早期版本的 Android 提供了类似的功能支持。

核心功能

OpenJDK 17 更新
Android 14 将继续更新 Android 的核心库,与最新的 OpenJDK LTS 版本保持一致,并带来以下功能和改进:

  1. 更新大约 300 个 java.base 类以支持 Java 17。
  2. 引入文本块功能,允许使用多行字符串字面量,提升 Java 编程语言的编写便利性。
  3. 支持 instanceof 模式匹配,使对象在 instanceof 中被视为具有特定类型,无需额外的变量。
  4. 引入密封类,允许限制哪些类和接口可以扩展或实现它们,提高代码安全性和可维护性。

通过 Google Play 系统更新 (Project Mainline),超过 6 亿台设备可以接收包含这些更改的最新 Android 运行时 (ART) 更新。这些更新旨在为应用提供更加一致和安全的跨设备环境,并使用户能够享受独立于平台版本的新功能。

值得注意的是,Java 和 OpenJDK 是 Oracle 及/或其关联公司的商标或注册商标。

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

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

相关文章

【设计模式——学习笔记】23种设计模式——观察者模式Observer(原理讲解+应用场景介绍+案例介绍+Java代码实现)

文章目录 案例引入原始方案实现实现问题分析 介绍基础介绍登场角色 案例实现案例一类图实现分析 案例二类图实现 观察者模式在JDK源码的应用总结文章说明 案例引入 有一个天气预报项目,需求如下: 气象站可以将每天测量到的温度、湿度、气压等等以公告的…

Apache Kafka Learning

目录 一、Kafka 1、Message Queue是什么? 2、Kafka 基础架构 3、Kafka安装 二、Maven项目测试 1、Topic API 2、生产者&消费者 一、Kafka Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式…

Flutter 实现按位置大小比例布局的控件

文章目录 前言一、如何实现?1、数值转成分数2、RowFlexible布局横向3、ColumnFlexible布局纵向 二、完整代码三、使用示例1、基本用法2、四分屏3、六分屏4、八分屏5、九分屏6、414分屏 总结 前言 做视频监控项目时需要需要展示多分屏,比如2x2、3x3、414…

使用 LangChain 搭建基于 Amazon DynamoDB 的大语言模型应用

LangChain 是一个旨在简化使用大型语言模型创建应用程序的框架。作为语言模型集成框架,在这个应用场景中,LangChain 将与 Amazon DynamoDB 紧密结合,构建一个完整的基于大语言模型的聊天应用。 本次活动,我们特意邀请了亚马逊云科…

C#类型转换

🍟数据类型 大体分为三个大类型:整型(其中又分为有符号整型、无符号整型)、浮点型、特殊类型 注意:浮点数在初始化时要在值后加上后缀,双精度浮点数decimal的后缀为“M”、单精度浮点数double和float的后…

AI相机“妙鸭相机”原理分析和手动实现方案

妙鸭相机 一个通过上传大约20张照片,生成专属自拍。在2023年7月末爆火,根据36Kr报道,妙鸭相机系阿里系产品,挂靠在阿里大文娱体系下,并非独立公司。 使用方法是上传20张自拍照片,之后可以选择模板生成自己…

算法通过村——Hash和队列问题解析

算法的备胎Hash和找靠山的队列 备胎Hash Hash,不管是算法,还是在工程中都会大量使用。很多复杂的算法问题都用Hash能够轻松解决,也正是如此,在算法例就显得没什么思维含量,所以Hash是应用里的扛把子,但在算…

【安全测试】安全测试威胁建模设计方法STRIDE

目录 背景 TM(ThreatModeling) 实践 具体流程 资料获取方法 背景 目前安全测试一般都存在如下问题: 安全测试人员不懂业务,业务测试人员不懂安全,安全测试设计出现遗漏是无法避免的安全测试点繁多复杂,单点分析会导致风险暴…

selenium 截屏

当前环境: Windows 10 Python 3.7 selenium 3.141.0 Google Chrome 115.0.5790.110 (64 位) from selenium import webdriver import base64if __name__ __main__:#driver webdriver.Chrome()driver.get(https://www.baidu.com/)# 1.…

简单游戏截图_可控截取内容2

一个需求 我需要在场景中截取不同层级的截图(如只截模型或只截UI或只截外部相加看到的画面 或全都截或和Shader配合呈现人眼夜视仪热成像的画面切换) 将截图排到列表中,在场景UI中展示出来 如何做 相机要能够看到不同的画面 将当前帧画面存储下来 将存储的画面展示出…

【2023年电赛国一必备】E题报告模板--可直接使用

任务 图1 任务内容 要求 图2 基本要求内容 图3 发挥部分内容 说明 图4 说明内容 评分标准 图5 评分内容 正文 (部分) 摘要 本文使用K210芯片设计了一个运动目标控制与自动追踪系统。系统包括使用深度学习进行识别激光位置,其中红色激…

Emacs之将.el编译成bin(一百二十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

vscode如何退出/切换 github 账号

退出/切换 github 账号 左下角点击头像按钮,选择注销,然后再重新登录

JS进阶-Day3

🥔:永远做自己的聚光灯 JS进阶-Day1——点击此处(作用域、函数、解构赋值等) JS进阶-Day2——点击此处(深入对象之构造函数、实例成员、静态成员等;内置构造函数之引用类型、包装类型等) 更多JS…

boost beast http server 测试

boost beast http client boost http server boost beast 是一个非常好用的库&#xff0c;带上boost的协程&#xff0c;好很多东西是比较好用的&#xff0c;以下程序使用四个线程开启协程处理进入http协议处理。协议支持http get 和 http post #include <boost/beast/cor…

Java与Kotline Funcation函数与参数函数的详解

一.介绍 在现在以IDE为开发工具的时代&#xff0c;各种开发语言都有&#xff0c;kotlin的语法势头比较强&#xff0c;今天我们将介绍在项目中出现比较多的两种函数&#xff0c;一种是参数函数&#xff0c;还有一种就是Function函数 如果你不了匿名函数请阅读以下文档&#xff…

ISC 2023︱诚邀您参与赛宁“安全验证评估”论坛

​​8月9日-10日&#xff0c;第十一届互联网安全大会&#xff08;简称ISC 2023&#xff09;将在北京国家会议中心举办。本次大会以“安全即服务&#xff0c;开启人工智能时代数字安全新范式”为主题&#xff0c;打造全球首场AI数字安全峰会&#xff0c;赋予安全即服务新时代内涵…

常见的设计模式(超详细)

文章目录 单例模式饿汉式单例模式懒汉式单例模式双重检索单例模式 工厂模式简单工厂模式工厂&#xff08;方法&#xff09;模式抽象工厂模式 原型模式代理模式 单例模式 确保一个类只有一个实例&#xff0c;并且自行实例化并向整个系统提供这个实例。 饿汉式单例模式 饿汉式单…

关于win11 debian wsl 子系统安装启动docker一直starting,无法启动

首先我先说明&#xff0c;我的步骤都是按照官网步骤来的 通过官网的操作步骤 通过测试命令 sudo docker run hello-world得到下面的命令&#xff0c;我们通过启动命令 sudo service docker start 执行结果如下图 也就是说无法启动&#xff0c;一直显示在启动中 遇到这种情况…

js实现轮播图(手动+自动)

目录 设置大体样式 图片播放 完整代码 设置大体样式 <input type"button" value"<" id"pre" onclick"pre()" onmouseover"stop()" onmouseout"start()" class"left"> <img src"..…