Android 14重要更新预览

news2024/11/18 22:43:27

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.coloradmin.cn/o/831111.html

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

相关文章

vcruntime140_1.dll修复的方法大全,缺失vcruntime140_1.dll解决方法分享

vcruntime140_1.dll这个文件在电脑里属于挺重要的一个文件,一但它缺失了,那么很多程序都是运行不了的,今天我们就来讲解一下这个vcruntime140_1.dll修复以及它的一些作用和属性。 一.vcruntime140_1.dll的作用 vcruntime140_1.dll是Microso…

排序八卦炉之选择、堆排

文章目录 1.选择排序1.1代码实现1.2复杂度 2.堆排序2.1代码实现2.2复杂度 1.选择排序 1.1代码实现 // 当数据趋于有序或随机(可能部分有序) 插排更有优势 O(N)~O(N^2) //选择排序:O(N^2) O(N^2)~O(N^2) void …

HttpRunner自动化工具之times 重复执行

单个用例重复执行 如果想让某个测试步骤重复执行,可以在test 中增加times参数,如下: 执行效果: 实战案例 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这…

纯粹即刻,畅享音乐搜索的轻松体验

纯粹即刻,畅享音乐搜索的轻松体验 在当今快节奏的生活中,我们常常渴望一种简单而便捷的方式来探索和享受音乐。现在,你可以纯粹即刻地畅享音乐搜索的轻松体验。无论你是寻找热门歌曲还是探索不同风格的音乐,这款应用将为你带来随…

6.物联网操作系统信号量

一。信号量的概念与应用 信号量定义 FreeRTOS信号量介绍 FreeRTOS信号量工作原理 1.信号量的定义 多任务环境下使用,用来协调多个任务正确合理使用临界资源。 2.FreeRTOS信号量介绍 Semaphore包括Binary,Count,Mutex; Mutex包…

ATFX汇评:英央行利率决议来袭,大概率加息25基点

ATFX汇评:今日19:00,英国央行公布利率决议、会议纪要和货币政策报告;半小时后,英国央行行长贝利召开货币政策新闻发布会。当前英国央行基准利率5%,市场预期将加息25基点至5.25%,假若符合预期,则…

问道管理:沪指窄幅震荡跌0.18%,有色、汽车等板块走低

3日早盘,沪指盘中窄幅震动下探,创业板逆市上扬;两市半日成交不足5000亿元,北向资金净卖出超15亿元。 到午间收盘,沪指跌0.18%报3255.88点,深成指跌0.23%,创业板指涨0.2%;两市算计成交…

2023年一建考点速记(五大专业)

一级级建造师考点速记手册是根据历年考试的命题方向及命题规律总结而成,其中BI超频必考点(每年必考),B2高频易考点(每2年一次)B3中频可考点(3-5年一次),B4低频 BOSS 考点(超过5年一次B1涵盖卷面的40%的分值;B2涵盖卷面20%的分值;B3涵盖卷面15…

网工头疼的IP子网划分,其实就这么简单

下午好,我的网工朋友。 最近网工群里还是一如既往的热闹啊,关于行业、技术、职场的话题热议不断。 前段时间有群友在里面聊子网划分,有几个不懂的网工朋友,悄悄来私聊老杨总,表示想再补充一下这方面的知识。 看了眼&…

IDEA强大的VisualGC插件

前言 开发阶段实时监测,自己的JVM信息,实时可视化 Hotspot JVM 垃圾回收监控工具, 支持查看本地和远程JVM进程, 支持G1 and ZGC算法。 插件安装 在线安装 IntelliJ IDEA 可通过在线安装的方式,安装插件 JDK VisualGC,安装步骤: …

Selenium Chrome Webdriver 如何获取 Youtube 悬停文本

导语 Youtube 是一个非常流行的视频分享平台,有时候我们可能想要爬取一些视频的信息,比如标题、播放量、点赞数等。但是有些信息并不是直接显示在网页上的,而是需要我们将鼠标悬停在某个元素上才能看到,比如视频的时长、上传时间…

华为云CTS 使用场景

云审计服务 CTS 云审计服务(Cloud Trace Service),帮助您监控并记录华为云账号的活动,包括通过控制台、API、开发者工具对云上产品和服务的访问和使用行为,提供对各种云资源操作记录的收集、存储和查询功能&#xff0…

解密Redis:应对面试中的缓存相关问题2

面试官:Redis集群有哪些方案,知道嘛? 候选人:嗯~~,在Redis中提供的集群方案总共有三种:主从复制、哨兵模式、Redis分片集群。 面试官:那你来介绍一下主从同步。 候选人:嗯&#xff…

IDEA基础使用

IDEA基础使用 1、IDEA中显示用法和用户截图展示有调用显示无调用显示 对应方法 2、如何找出项目中所有不被调用方法截图展示对应方法 3、常用代码(Code)说明及快捷键:4、未完待续待日后更新。。。总结:欢迎指导,也祝码友们代码越来越棒,技术越…

python版puppeteer——pyppeteerselenium的加强版——seleniumwire

目录 前言seleniumwire安装创建web driver设置代理反屏蔽修改window.navigator.webdriver关键字返回结果options追加参数 pyppeteerpuppeteer安装快速入门参数配置隐藏浏览器特征拦截请求更多文档&博客 Playwright安装快速入门新概念:Context页面基本操作选择器…

wolfSSL5.6.3移植至ZYNQ(XC7Z010)记录

上篇文章主要描述了如何从源工程中将configure.ac转变为configure,并成功使其在Ubuntu上运行,此篇主要描述将其移植到嵌入式arm开发板上(在官方手册中有列举支持的硬件平台架构)。 交叉编译 1. 解压源工程代码; 2.进…

XUbuntu22.04之统计屏幕使用时间activitywatch(一百八十八)

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

Node.js-http模块服务端请求与响应操作,请求报文与响应报文

简单案例创建HTTP服务端: // 导入 http 模块 const http require("http"); // 创建服务对象 const server http.createServer((request, response) > {// 设置编码格式,解决中文乱码问题response.setHeader("content-type", &…

WAF独木难支 RASP与ADR将成应用安全防护2.0时代新宠

曾几何时,黑客攻击大多通过网络层进行,但随着基于网络层的基础安全防护措施趋于严密,防火墙、入侵防御、防病毒等安全软硬件构建起了相对完善的防护体系,想再从网络层钻空子的难度增大。如今,黑客攻击从网络层转入Web为…

学无止境·运维高阶③(Mysqldump脚本)

Mysqldump脚本 1、详细脚本2、执行 1、详细脚本 #!/bin/bash mysql_cmd‘-uroot -pRedHat123’ exclude_db‘information_schema|performance_schema|sys’ bak_path/backup/db mysql m y s q l c m d − e ′ s h o w d a t a b a s e s ′ − N ∣ e g r e p − v " {m…