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.rhkb.cn/news/74147.html

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

相关文章

分布式限流方案及实现

优质博文:IT-BLOG-CN 一、限流的作用和意义 限流是对高并发访问进行限制,限速的过程。通过限流来限制资源,可以提高系统的稳定性和可靠性,控制系统的负载,削峰填谷,保证服务质量。 服务限流后的常见处理…

【论文笔记】KDD2019 | KGAT: Knowledge Graph Attention Network for Recommendation

Abstract 为了更好的推荐,不仅要对user-item交互进行建模,还要将关系信息考虑进来 传统方法因子分解机将每个交互都当作一个独立的实例,但是忽略了item之间的关系(eg:一部电影的导演也是另一部电影的演员&#xff09…

【React】关于组件之间的通讯

🌟组件化:把一个项目拆成一个一个的组件,为了便与开发与维护 组件之间互相独立且封闭,一般而言,每个组件只能使用自己的数据(组件状态私有)。 如果组件之间相互传参怎么办? 那么就要…

[nlp] TF-IDF算法介绍

(1)TF是词频(Term Frequency) 词频是文档中词出现的概率。 (2) IDF是逆向文件频率(Inverse Document Frequency) 包含词条的文档越少,IDF越大。

Maven依赖管理

依赖特性: 1、依赖配置 2、依赖传递 3、可选依赖 4、排除依赖 5、依赖范围

linux(centos) docker 安装 nginx

​1、拉取nginx最新版本镜像 docker pull nginx:latest 查看镜像 docker images 或者 docker images -a 2.启动nginx容器 docker run -d -p 80:80 --name nginx nginx 使用docker run命令,启动nginx容器。 --name,设置容器名。为方便记忆&#xff…

监控数据的采集方式及原理

1、读取 /proc 目录 /proc 是一个位于内存中的伪文件系统,该目录下保存的不是真正的文件和目录,而是一些“运行时”信息,Linux 操作系统层面的很多监控数据,比如内存数据、网卡流量、机器负载等,都是从 /proc 中获取的…

设计模式-中介者模式在Java中使用示例-客户信息管理

场景 欲开发客户信息管理窗口界面,界面组件之间存在较为复杂的交互关系:如果删除一个客户, 要在客户列表(List)中删掉对应的项,客户选择组合框(ComboBox)中客户名称也将减少一个; 如果增加一个客户信息,…

接口自动化代码不会写?试试RunnerGo

RunnerGo支持自动化测试功能,RunnerGo的工作流程是:接口管理-场景管理-性能测试-自动化测试,所以自动化测试的运行内容为场景下的用例,我们可以在“场景管理”中预先配置好该场景下的用例,也可以在自动化测试中创建用例…

Tensorflow benchmark 实操指南

环境搭建篇见环境搭建-CentOS7下Nvidia Docker容器基于TensorFlow1.15测试GPU_东方狱兔的博客-CSDN博客 1. 下载Benchmarks源码 从 TensorFlow 的 Github 仓库上下载 TensorFlow Benchmarks,可以通过以下命令来下载 https://github.com/tensorflow/benchmarks 我…

如何使用大模型处理生活繁琐的工作

如果每封电子邮件、每个带有订单、发票、投诉、录用请求或工作申请的 PDF 都可以翻译成机器可读的数据,会怎样?然后可以由 ERP / CRM / LMS / TMS 自动处理吗?无需编程特殊接口。 听起来很神奇?它确实有一些魔力。但最近已成为可…

【计算机视觉中的 GAN 】 - 生成学习简介(1)

一、说明 在阅读本文之前,强烈建议先阅读预备知识,否则缺乏必要的推理基础。本文是相同理论GAN原理的具体化范例,阅读后有两个好处:1 巩固了已经建立的GAN基本概念 2 对具体应用的过程和套路进行常识学习,这种练习题一…

3D Web轻量化渲染开发工具HOOPS Communicator是什么?

HOOPS Communicator是Tech Soft 3D旗下的主流产品之一,具有强大的、专用的高性能图形内核,是一款专注于基于Web端的高级3D工程应用程序。由HOOPS Server和HOOPS Web Viewer两大部分组成,提供了HOOPS Convertrer、Data Authoring的模型转换和编…

对模版以及模版中参数的理解

所谓模板,实际上是建立一个通用函数或类,其类内部的类型和函数的形参类型不具体指定,用一个虚拟的类型来代表。 就比方说你想要实现 一个Add的加法函数,面对不同的类型,你是否要进行多次函数重载呢,其实这多…

HCIP——前期综合实验

前期综合实验 一、实验拓扑二、实验要求三、实验思路四、实验步骤1、配置接口IP地址2、交换机配置划分vlan10以及vlan203、总部分部,骨干网配置OSPF分部总部骨干网 4、配置BGP建立邻居关系总部骨干网分部 5、发布用户网段6、将下一跳改为本地7、允许AS重复8、重发布…

计算机图形学笔记2-Viewing 观测

观测主要解决的问题是如何把物体的三维“模型”变成我们在屏幕所看到的二维“图片”,我们在计算机看到实体模型可以分成这样几步: 相机变换(camera transformation)或眼变换(eye transformation):想象把相机放在任意一个位置来观测物体&#…

Electron + Vue3 + Vite + TS 构建桌面应用

之前是使用React、Electron、TS和webpack来构建桌面应用的。虽然功能齐全,但是打包等等开发的体验不太理想,总感觉太慢了。作为一个开发者,我们总是希望,执行构建命令后,可以快速打包或者启动本地应用,且通过更少的配置,来完成开发体验。 现在的vite已经得到广泛的应用…

Linux操作系统学习,Linux基础命令大全

目录 第一章、Linux简介和安装1.1)Linux简介和分类1.2)安装VMware虚拟机,在虚拟机中安装CentOS 7 第二章、虚拟机中Linux的IP地址配置详解2.1)什么是IP地址,如何查看2.2)虚拟机NAT模式中Linux的IP地址设置有…

【雕爷学编程】Arduino动手做(181)---Maixduino AI开发板2

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

mysql-入门笔记-3

# ----------排序查询-------- # 语法 # select 字段列表 from 表名 order by 字段1 排序方式1 ,字段2 排序方式2 ; DESC 降序 ASC升序 # 1 根据年龄对公司的员工进行升序排序---默认升序-黄色提示代码冗余 select * from userTable order by age ASC ; # 2 根据入职时间,对员…