Android 14 incluye excelentes funciones y APIs para desarrolladores. A continuación, se incluye información que te ayudará a conocer las funciones de tus apps y a comenzar a usar las APIs relacionadas.
Para obtener una lista detallada de las APIs agregadas, modificadas y quitadas, consulta el informe de diferencias de la API. Para obtener detalles sobre las APIs agregadas, consulta la referencia de la API de Android. En Android 14, busca las APIs que se agregaron en el nivel de API 34. Para obtener información sobre las áreas en las que los cambios de la plataforma podrían afectar tus apps, asegúrate de revisar los cambios en el comportamiento de Android 14 para apps orientadas a Android 14 y para todas las apps.
Internacionalización
Preferencias de idioma de las apps
Android 14 扩展了 Android 13(API 级别 33)中引入的按应用设定语言功能,并包含以下额外功能:
自动生成应用的
localeConfig
:从 Android Studio Giraffe Canary 7 和 AGP 8.1.0-alpha07 开始,您可以将应用配置为自动支持各应用语言偏好设定。Android Gradle 插件会根据您的项目资源生成LocaleConfig
文件,并在最终清单文件中添加对该文件的引用,这样您就不再需要手动创建或更新该文件。AGP 使用应用模块的res
文件夹中的资源以及任何库模块依赖项来确定要在LocaleConfig
文件中添加的语言区域。动态更新应用的
localeConfig
:使用LocaleManager
方法中的setOverrideLocaleConfig()
和getOverrideLocaleConfig()
可以在设备的系统设置中动态更新应用的受支持语言列表。有了这种灵活性,您可以按区域自定义支持的语言列表、运行 A/B 实验,或者如果您的应用通过服务器端推送进行本地化,则可以提供更新后的语言区域列表。输入法 (IME) 的应用语言可见性:IME 可以利用
getApplicationLocales()
方法查看当前应用的语言,并将 IME 语言与该语言进行匹配。
API de Grammatical Inflection
Tres mil millones de personas hablan idiomas con género, es decir, idiomas en los que las categorías gramaticales, como sustantivos, verbos, adjetivos y preposiciones, inflexionan según el género de las personas y los objetos con las que te comunicas o sobre los que hablas. Tradicionalmente, muchos idiomas con género usan el género gramatical masculino como el género predeterminado o genérico.
Dirigirse a usuarios con un género gramatical incorrecto, por ejemplo, a mujeres con género gramatical masculino, puede tener un impacto negativo en su rendimiento y actitud. Por el contrario, una IU con un lenguaje que refleja, de forma correcta, el género gramatical del usuario puede mejorar su participación y proporcionar una experiencia más personalizada y más natural.
为帮助您针对区分性别的语言构建以用户为中心的界面,Android 14 引入了 Grammatical Inflection API,让您无需重构应用便能添加对语法性别的支持。
Preferencias regionales
用户可通过地区偏好设置对温度单位、一周的第一天和编号系统进行个性化设置。居住在美国的欧洲用户可能更希望使用摄氏度,而不是华氏度,并且希望应用将星期一视为一周的开始,而不是像美国那样默认从星期日开始。
新 Android 设置菜单包含这些偏好设置,使用户能够在一个位置集中发现这些应用更改偏好设置。这些偏好设置在备份和恢复设备后也会保持不变。多个 API 和 intent(例如 getTemperatureUnit
和 getFirstDayOfWeek
)会为您的应用授予读取权限来访问用户偏好设置,因此您的应用可以调整其显示信息的方式。您还可以在 ACTION_LOCALE_CHANGED
上注册 BroadcastReceiver
,以便在地区偏好设置发生更改时处理语言区域配置更改。
如需找到这些设置,请打开“设置”应用,然后依次前往系统 > 语言和输入法 > 地区偏好设置。


Accesibilidad
Escalamiento de fuente no lineal al 200%
从 Android 14 开始,系统支持字体放大高达 200%,为弱视用户提供了符合网络内容无障碍指南 (WCAG) 的其他无障碍功能选项。
为防止屏幕上的大文本元素放大放大, 应用非线性缩放曲线。这种放大策略意味着大号文本的放大比例不会与较小的文本相同。非线性字体放大有助于保持不同大小元素之间的比例层次结构,同时缓解高级别线性文本放大存在的问题(例如文本被截断或文本因非常大的显示大小而难以阅读)。
使用非线性字体放大测试应用

如果您已使用放大像素 (sp) 单位来定义文字大小,那么这些 其他选项和扩缩方面的改进会自动应用到 。不过,您仍应使用 启用字体大小 (200%),以确保应用采用 且可以适应较大字号,并且不会影响易用性。
要启用 200% 字号,请按以下步骤操作:
- 打开“设置”应用,然后依次前往无障碍 > 显示大小和文字。
- 在字号选项中,点按加号 (+) 图标,直到启用最大字号设置,如本部分随附的图片所示。
针对文本大小使用放大像素 (sp) 单位
请务必始终以 sp 为单位指定文字大小。当应用使用 sp 单位时,Android 可以应用用户的首选文本大小,并相应地进行缩放。
请勿为内边距使用 sp 单位,也不要假定内边距来定义视图高度:使用非线性字体放大 sp 尺寸可能并不成比例,因此 4sp + 20sp 可能并不等于 24sp。
转换放大像素 (sp) 单位
使用 TypedValue.applyDimension()
从 sp 单位转换为像素,并使用 TypedValue.deriveDimension()
将像素转换为 sp。这些方法会自动应用适当的非线性放大曲线。
避免对公式进行硬编码,使用以下代码
Configuration.fontScale
或
DisplayMetrics.scaledDensity
。因为字体缩放
非线性的,则 scaledDensity
字段不再准确。fontScale
字段应仅用于提供信息,
使用单个标量值进行扩缩。
为 lineHeight 使用 sp 单位
始终使用 sp 单位定义 android:lineHeight
dp 为 dp,因此行高会随文本一起缩放。否则,如果文本使用 sp,但 lineHeight
使用 dp 或 px,则文本不会缩放,并且看起来很拥挤。TextView 会自动更正 lineHeight
,以便实现您的目标
比例会得到保留,但前提是 textSize
和 lineHeight
以 sp 为单位进行定义。
Cámara y contenido multimedia
Ultra HDR para imágenes

Android 14 agrega compatibilidad con imágenes de alto rango dinámico (HDR) que retienen más información del sensor cuando se toma una foto, lo que permite colores vivos y un mayor contraste. Android usa el formato Ultra HDR, que es totalmente retrocompatible con las imágenes JPEG, lo que permite que las apps interactúen sin problemas con las imágenes HDR y las muestren en rango dinámico estándar (SDR) según sea necesario.
El framework renderiza estas imágenes en la IU en HDR de forma automática cuando tu app habilita el uso de la IU HDR para su ventana de actividad, ya sea a través de una entrada de manifiesto o en el tiempo de ejecución mediante una llamada a Window.setColorMode()
. También puedes capturar imágenes estáticas Ultra HDR comprimidas en dispositivos compatibles. Con más colores recuperados del sensor, la edición posterior puede ser más flexible. El Gainmap
asociado con las imágenes Ultra HDR se puede usar para renderizarlas con OpenGL o Vulkan.
Zoom, enfoque, Postview y más en las extensiones de cámara
Android 14 actualiza y mejora las extensiones de la cámara, lo que permite que las apps manejen tiempos de procesamiento más largos, lo que permite mejorar las imágenes con algoritmos intensivos en procesamiento, como la fotografía con poca luz en dispositivos compatibles. Estas funciones les brindan a los usuarios una experiencia aún más sólida cuando usan las funciones de extensión de la cámara. Entre los ejemplos de estas mejoras, se incluyen los siguientes:
- La estimación de latencia de procesamiento de capturas estáticas dinámicas proporciona estimaciones de latencia de capturas estáticas mucho más precisas en función de las condiciones actuales de la escena y el entorno. Llama a
CameraExtensionSession.getRealtimeStillCaptureLatency()
para obtener un objetoStillCaptureLatency
que tenga dos métodos de estimación de latencia. El métodogetCaptureLatency()
muestra la latencia estimada entreonCaptureStarted
yonCaptureProcessStarted()
, y el métodogetProcessingLatency()
muestra la latencia estimada entreonCaptureProcessStarted()
y el fotograma procesado final que está disponible. - Compatibilidad con devoluciones de llamada de progreso de captura para que las apps puedan mostrar el progreso actual de las operaciones de procesamiento de capturas estáticas de larga duración. Puedes verificar si esta función está disponible con
CameraExtensionCharacteristics.isCaptureProcessProgressAvailable
y, si es así, implementar la devolución de llamadaonCaptureProcessProgressed()
, que tiene el progreso (de 0 a 100) pasado como parámetro. Metadatos específicos de la extensión, como
CaptureRequest.EXTENSION_STRENGTH
para marcar la cantidad de un efecto de extensión, como la cantidad de desenfoque de fondo conEXTENSION_BOKEH
Función de vista posterior para la captura de imágenes fijas en extensiones de cámara, que proporciona una imagen menos procesada más rápido que la imagen final. Si una extensión tiene una latencia de procesamiento mayor, se puede proporcionar una imagen posterior a la vista como marcador de posición para mejorar la UX y cambiarla más adelante por la imagen final. Puedes verificar si esta función está disponible con
CameraExtensionCharacteristics.isPostviewAvailable
. Luego, puedes pasar unOutputConfiguration
aExtensionSessionConfiguration.setPostviewOutputConfiguration
.Compatibilidad con
SurfaceView
, que permite una ruta de renderización de vista previa más optimizada y eficiente en términos de energía.Se agregó compatibilidad con el enfoque y el zoom con un toque durante el uso de la extensión.
Zoom en el sensor
当 CameraCharacteristics
中的 REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE
包含 SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
时,您的应用可以使用高级传感器功能,将剪裁后的 RAW 数据流的像素与全视野范围相同,方法是将 CaptureRequest
与将数据流用例设置为 CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
的 RAW 目标搭配使用。通过实现请求替换控件,更新后的相机可让用户在其他相机控件准备就绪之前使用缩放控件。
Audio USB sin pérdida
Android 14 admite formatos de audio sin pérdida para experiencias de nivel de audiófilo con auriculares con cable USB. Puedes consultar un dispositivo USB para obtener sus atributos de mezclador preferidos, registrar un objeto de escucha para detectar cambios en los atributos de mezclador preferidos y configurar los atributos de mezclador con la clase AudioMixerAttributes
. Esta clase representa el formato, como la máscara de canales, la tasa de muestreo y el comportamiento del mezclador de audio. La clase permite que el audio se envíe directamente, sin mezclar, ajustar el volumen ni procesar efectos.
Productividad y herramientas para desarrolladores
Credential Manager
Android 14 将 Credential Manager 添加为平台 API,并通过使用 Google Play 服务的 Jetpack 库,向后额外支持 Android 4.4(API 级别 19)设备。Credential Manager 旨在通过 API 使用用户配置的凭据提供程序检索和存储凭据,让用户更轻松地登录。Credential Manager 在单个 API 中支持多种登录方法,包括用户名和密码、通行密钥和联合登录解决方案(如“使用 Google 账号登录”)。
通行密钥具有许多优势。例如,通行密钥是基于业界标准构建的,可在各种不同的操作系统和浏览器生态系统中使用,并且可用于网站和应用。
如需了解详情,请参阅 Credential Manager 和通行密钥文档以及介绍 Credential Manager 和通行密钥的博文。
Health Connect
Health Connect es un repositorio integrado en el dispositivo para los datos de salud y fitness del usuario. Permite a los usuarios compartir datos entre sus apps favoritas, con un solo lugar para controlar qué datos quieren compartir con estas apps.
En dispositivos con versiones de Android anteriores a Android 14, Health Connect está disponible para descargarse como app en Google Play Store. A partir de Android 14, Health Connect forma parte de la plataforma y recibe actualizaciones a través de las actualizaciones del sistema de Google Play sin necesidad de una descarga independiente. Con esto, Health Connect se puede actualizar con frecuencia, y tus apps pueden depender de que Health Connect esté disponible en dispositivos que ejecutan Android 14 o versiones posteriores. Los usuarios pueden acceder a Health Connect desde la configuración de su dispositivo, con controles de privacidad integrados en la configuración del sistema.


Health Connect incluye varias funciones nuevas en Android 14, como las rutas de ejercicio, que permiten a los usuarios compartir una ruta de su entrenamiento que se puede visualizar en un mapa. Una ruta se define como una lista de ubicaciones guardadas dentro de un período, y tu app puede insertar rutas en sesiones de ejercicio y vincularlas. Para garantizar que los usuarios tengan un control total sobre estos datos sensibles, deben permitir compartir rutas individuales con otras apps.
Para obtener más información, consulta la documentación de Health Connection y la entrada de blog sobre Novedades de Android Health.
Actualizaciones de OpenJDK 17
Android 14 将继续更新 Android 的核心库,以与最新 OpenJDK LTS 版本中的功能保持一致,包括适合应用和平台开发者的库更新和 Java 17 语言支持。
其中包含以下功能和改进:
- 将大约 300 个
java.base
类更新为支持 Java 17。 - 文本块 - 为 Java 编程语言引入了多行字符串字面量。
- instanceof 模式匹配:可让对象在
instanceof
中被视为具有特定类型,而无需任何额外的变量。 - 密封类:允许您限制哪些类和接口可以扩展或实现它们。
得益于 Google Play 系统更新 (Project Mainline),6 亿多台设备能够接收包含这些更改的最新 Android 运行时 (ART) 更新。我们致力于为应用提供更加一致、安全的跨设备环境,并为用户提供独立于平台版本的新功能。
Java 和 OpenJDK 是 Oracle 及/或其关联公司的商标或注册商标。
Mejoras para tiendas de aplicaciones
Android 14 introduce varias APIs de PackageInstaller
que permiten que las tiendas de aplicaciones mejoren la experiencia del usuario.
Solicita aprobación para la instalación antes de realizar la descarga
La instalación o actualización de una app puede requerir aprobación del usuario.
Por ejemplo, cuando un instalador que usa el permiso REQUEST_INSTALL_PACKAGES
intenta instalar una app nueva. En versiones anteriores de Android, las tiendas de aplicaciones solo pueden solicitar la aprobación del usuario después de que se escriben los APK en la sesión de instalación y esta está confirmada.
A partir de Android 14, el método requestUserPreapproval()
les permite a los instaladores solicitar la aprobación del usuario antes de confirmar la sesión de instalación. Esta mejora permite que una tienda de aplicaciones aplace la descarga de cualquier APK hasta que el usuario haya aprobado la instalación. Además, una vez que un usuario aprobó la instalación, la tienda de aplicaciones puede descargarla e instalarla en segundo plano sin interrumpir al usuario.
Reclama la responsabilidad de las actualizaciones futuras
El método setRequestUpdateOwnership()
permite que un instalador le indique al sistema que tiene la responsabilidad de las actualizaciones futuras de una app que instala. Esta función permite actualizar la aplicación forzosa de la propiedad, es decir, que solo el propietario de la actualización puede instalar actualizaciones automáticas en la app. La aplicación forzosa de la actualización de la propiedad ayuda a garantizar que los usuarios reciban actualizaciones solo desde la tienda de aplicaciones prevista.
Cualquier otro instalador, incluidos los que usan el permiso INSTALL_PACKAGES
, deben recibir la aprobación explícita del usuario para instalar una actualización. Si un usuario decide continuar con la actualización desde otra fuente, la propiedad de esta se perderá.
Actualiza las apps en momentos menos disruptivos
Por lo general, las tiendas de aplicaciones quieren evitar actualizar una app que está en uso de forma activa, ya que esto produce que se finalicen los procesos en ejecución de la app, lo que podría interrumpir lo que el usuario estaba haciendo.
A partir de Android 14, la API de InstallConstraints
les brinda a los instaladores una forma de garantizar que las actualizaciones de apps se realicen en un momento oportuno. Por ejemplo, una tienda de aplicaciones puede llamar al método commitSessionAfterInstallConstraintsAreMet()
para asegurarse de que una actualización solo se confirme cuando el usuario ya no interactúa con la app en cuestión.
Instala divisiones opcionales sin inconvenientes
Con los APK divididos, las funciones de una app se pueden entregar en archivos APK separados, en lugar de un APK monolítico. Los APK divididos permiten que las tiendas de aplicaciones optimicen la entrega de diferentes componentes de las apps. Por ejemplo, las tiendas de aplicaciones pueden realizar optimizaciones en función de las propiedades del dispositivo de destino. La API de PackageInstaller
es compatible con las divisiones desde su introducción en el nivel de API 22.
En Android 14, el método setDontKillApp()
permite que un instalador indique que los procesos en ejecución de la app no deberían finalizar cuando se instalan nuevas divisiones. Las tiendas de aplicaciones pueden usar esta función para instalar funciones nuevas de una app sin inconvenientes mientras el usuario la usa.
Paquetes de metadatos de la app
A partir de Android 14, el instalador de paquetes de Android te permite especificar metadatos de la app, como las prácticas de seguridad de los datos, para incluir en las páginas de la tienda de aplicaciones, como Google Play.
Detecta cuando los usuarios toman capturas de pantalla del dispositivo
Para crear una experiencia más estandarizada para detectar capturas de pantalla, Android 14 introduce una API de detección de capturas de pantalla que preserva la privacidad. Esta API permite que las apps registren devoluciones de llamada por actividad. Estas devoluciones de llamada se invocan y se notifica al usuario cuando toma una captura de pantalla mientras esa actividad está visible.
Experiencia del usuario
Acciones personalizadas y clasificación mejorada de Sharesheet
Android 14 actualiza la hoja compartida del sistema para admitir acciones personalizadas de la app y resultados informativos de la versión preliminar para los usuarios.
Agrega acciones personalizadas
Con Android 14, tu app puede agregar acciones personalizadas a la hoja compartida del sistema que invoca.

Mejora la clasificación de los objetivos de Direct Share
Android 14 usa más indicadores de las apps para determinar la clasificación de los objetivos de Direct Share para proporcionarles resultados más útiles al usuario. Para proporcionar el indicador más útil para la clasificación, sigue las instrucciones para mejorar las clasificaciones de tus objetivos de Direct Share. Las apps de comunicación también pueden informar el uso de combinaciones de teclas para los mensajes entrantes y salientes.

Compatibilidad con animaciones integradas y personalizadas para el gesto atrás predictivo
En Android 13, se introdujo la animación de atrás predictivo a la página principal detrás de una opción para desarrolladores. Cuando se usa en una app compatible que tiene habilitada la opción para desarrolladores, al deslizar hacia atrás, se muestra una animación que indica que el gesto de retroceso permite cerrar la app y regresar a la pantalla principal.
Android 14 incluye varias mejoras y orientación nueva para el gesto atrás predictivo:
- Puedes configurar
android:enableOnBackInvokedCallback=true
para habilitar las animaciones del sistema de atrás predictivo por actividad en lugar de para toda la app. - Agregamos nuevas animaciones del sistema para acompañar la animación de regreso a la pantalla principal de Android 13. Las nuevas animaciones del sistema son las de cambio de actividad y cambio de tarea, que obtienes automáticamente después de la migración al gesto atrás predictivo.
- Agregamos nuevas animaciones de componentes de material para las hojas inferiores, las hojas laterales y la búsqueda.
- Creamos una guía de diseño para crear transiciones y animaciones personalizadas en la app.
- Agregamos nuevas APIs para admitir animaciones de transición en la app:
handleOnBackStarted
,handleOnBackProgressed
yhandleOnBackCancelled
in
OnBackPressedCallback
onBackStarted
,onBackProgressed
yonBackCancelled
in
OnBackAnimationCallback
- Usa
overrideActivityTransition
en lugar deoverridePendingTransition
para las transiciones que responden cuando el usuario desliza el dedo hacia atrás
Con esta versión preliminar de Android 14, todas las funciones de atrás predictivo permanecen detrás de una opción para desarrolladores. Consulta la guía para desarrolladores para migrar tu app al gesto atrás predictivo, así como la guía para desarrolladores para crear transiciones personalizadas en la app.
Anulaciones por app del fabricante del dispositivo con pantalla grande
Las anulaciones por app permiten que los fabricantes de dispositivos cambien el comportamiento de las apps en dispositivos con pantallas grandes. Por ejemplo, la anulación FORCE_RESIZE_APP
le indica al sistema que cambie el tamaño de la app para que se ajuste a las dimensiones de la pantalla (evitando el modo de compatibilidad de tamaño) incluso si se configuró resizeableActivity="false"
en el manifiesto de la app.
Las anulaciones están diseñadas para mejorar la experiencia del usuario en pantallas grandes.
Las nuevas propiedades del manifiesto te permiten inhabilitar algunas anulaciones del fabricante de dispositivos para tu app.
Anulaciones por app para usuarios de pantallas grandes
Las anulaciones por app cambian el comportamiento de las apps en dispositivos con pantallas grandes. Por ejemplo, la anulación del fabricante del dispositivo OVERRIDE_MIN_ASPECT_RATIO_LARGE
establece la relación de aspecto de la app en 16:9, independientemente de su configuración.
QPR1 de Android 14 permite que los usuarios apliquen anulaciones por app a través de un nuevo menú de configuración en dispositivos con pantalla grande.
Compartir pantalla de una app
La función de compartir pantalla de una app permite a los usuarios compartir una ventana de la app en lugar de toda la pantalla del dispositivo durante la grabación de contenido de pantalla.
Con el uso compartido de pantalla de la app, la barra de estado, la barra de navegación, las notificaciones y otros elementos de la IU del sistema se excluyen de la pantalla compartida. Solo se comparte el contenido de la app seleccionada.
El uso compartido de pantalla de la app mejora la productividad y la privacidad, ya que permite que los usuarios ejecuten varias apps, pero limitan el uso compartido de contenido a una sola app.
Respuesta inteligente potenciada por LLM en Gboard en el Pixel 8 Pro
在搭载 12 月功能分块的 Pixel 8 Pro 设备上,开发者可以在 Gboard 中试用质量更高的智能回复,这些回复由在 Google Tensor 上运行的设备端大语言模型 (LLM) 提供支持。
此功能目前仅在 WhatsApp、Line 和 KakaoTalk 中以美式英语的形式提供给用户进行小范围测试。此功能需要使用 Pixel 8 Pro 设备,并将 Gboard 用作键盘。
如需试用此功能,请先依次前往设置 > 开发者选项 > AiCore 设置 > 启用 Aicore 持久性,启用该功能。
接下来,在受支持的应用中打开对话,即可在 Gboard 的建议栏中看到依托 LLM 的智能回复,以便回复收到的消息。
Gráficos
Las rutas de acceso son consultables e interpolables
La API de Path
de Android es un mecanismo potente y flexible para crear y renderizar gráficos vectoriales, con la capacidad de dibujar o rellenar una ruta, construir una ruta a partir de segmentos de línea o curvas cuadráticas o cúbicas, realizar operaciones booleanas para obtener formas aún más complejas o todas estas acciones de forma simultánea. Una limitación es la capacidad de descubrir lo que hay realmente en un objeto Path; los componentes internos del objeto son opacos para los llamadores después de su creación.
Para crear un Path
, debes llamar a métodos como moveTo()
, lineTo()
y cubicTo()
para agregar segmentos de ruta. Sin embargo, no hay forma de preguntarle a esa ruta cuáles son los segmentos, por lo que debes conservar esa información en el momento de la creación.
A partir de Android 14, puedes consultar rutas de acceso para descubrir su contenido.
Primero, debes obtener un objeto PathIterator
con la API de Path.getPathIterator
:
Kotlin
val path = Path().apply { moveTo(1.0f, 1.0f) lineTo(2.0f, 2.0f) close() } val pathIterator = path.pathIterator
Java
Path path = new Path(); path.moveTo(1.0F, 1.0F); path.lineTo(2.0F, 2.0F); path.close(); PathIterator pathIterator = path.getPathIterator();
A continuación, puedes llamar a PathIterator
para iterar a través de los segmentos uno por uno y recuperar todos los datos necesarios de cada segmento. En este ejemplo, se usan objetos PathIterator.Segment
, que agrupan los datos por ti:
Kotlin
for (segment in pathIterator) { println("segment: ${segment.verb}, ${segment.points}") }
Java
while (pathIterator.hasNext()) { PathIterator.Segment segment = pathIterator.next(); Log.i(LOG_TAG, "segment: " + segment.getVerb() + ", " + segment.getPoints()); }
PathIterator
también tiene una versión de next()
no asignable en la que puedes pasar un búfer para contener los datos de puntos.
Uno de los casos de uso importantes para consultar datos de Path
es la interpolación. Por ejemplo, podrías animar (o transformar) entre dos rutas diferentes. Para simplificar aún más ese caso de uso, Android 14 también incluye el método interpolate()
en Path
. Si suponemos que las dos rutas de acceso tienen la misma estructura interna, el método interpolate()
crea un Path
nuevo con ese resultado interpolado. En este ejemplo, se muestra una ruta cuya forma está incompleta (una interpolación lineal de 0.5) entre path
y otherPath
:
Kotlin
val interpolatedResult = Path() if (path.isInterpolatable(otherPath)) { path.interpolate(otherPath, .5f, interpolatedResult) }
Java
Path interpolatedResult = new Path(); if (path.isInterpolatable(otherPath)) { path.interpolate(otherPath, 0.5F, interpolatedResult); }
La biblioteca graphics-path de Jetpack también habilita APIs similares para versiones anteriores de Android.
Mallas personalizadas con sombreadores de vértices y fragmentos
Android admite desde hace mucho tiempo el dibujo de mallas de triángulos con sombreado personalizado, pero el formato de malla de entrada se limitó a algunas combinaciones de atributos predefinidos. Android 14 agrega compatibilidad con mallas personalizadas, que se pueden definir como triángulos o tiras de triángulos, y, de manera opcional, se pueden indexar. Estas mallas se especifican con atributos personalizados, pasos de vértices, variaciones y sombreadores de vértices y fragmentos escritos en AGSL.
El sombreador de vértices define las variaciones, como la posición y el color, mientras que el sombreador de fragmentos puede definir de manera opcional el color del píxel, por lo general, con las variaciones creadas por el sombreador de vértices. Si el sombreador de fragmentos proporciona el color, se combina con el color Paint
actual con el modo de combinación seleccionado cuando se dibuja la malla. Los uniformes se pueden pasar a los sombreadores de fragmentos y vértices para obtener mayor flexibilidad.
Procesador de búfer de hardware para Canvas
Para ayudar a usar la API de Canvas
de Android y dibujar con aceleración de hardware en un HardwareBuffer
, Android 14 presenta HardwareBufferRenderer
. Esta API es
particularmente útil cuando tu caso de uso involucra la comunicación con el sistema
a través de SurfaceControl
para una latencia baja
dibujo.