Android 14 incluye excelentes funciones y APIs para desarrolladores. La siguiente información te ayudará a obtener información sobre 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 API. Para obtener detalles sobre las APIs agregadas, consulta la referencia de la API de Android. En el caso de Android 14, busca las APIs que se agregaron en el nivel de API 34. Para conocer las áreas en las que los cambios de la plataforma podrían afectar a 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.
Para ayudarte a compilar una IU centrada en el usuario para idiomas con inflexión de género, Android 14 introduce la API de Grammatical Inflection, que te permite agregar compatibilidad con el género gramatical sin refactorizar la app.
Preferencias regionales
用户可通过地区偏好设置对温度单位、一周的第一天和编号系统进行个性化设置。居住在美国的欧洲用户可能更希望使用摄氏度,而不是华氏度,并且希望应用将星期一视为一周的开始,而不是像美国那样默认从星期日开始。
新 Android 设置菜单包含这些偏好设置,使用户能够在一个位置集中发现这些应用更改偏好设置。这些偏好设置在备份和恢复设备后也会保持不变。多个 API 和 intent(例如 getTemperatureUnit
和 getFirstDayOfWeek
)会为您的应用授予读取权限来访问用户偏好设置,因此您的应用可以调整其显示信息的方式。您还可以在 ACTION_LOCALE_CHANGED
上注册 BroadcastReceiver
,以便在地区偏好设置发生更改时处理语言区域配置更改。
如需找到这些设置,请打开“设置”应用,然后依次前往系统 > 语言和输入法 > 地区偏好设置。
Accesibilidad
Escalamiento de fuente no lineal al 200%
Starting in Android 14, the system supports font scaling up to 200%, providing low-vision users with additional accessibility options that align with Web Content Accessibility Guidelines (WCAG).
To prevent large text elements on screen from scaling too large, the system applies a nonlinear scaling curve. This scaling strategy means that large text doesn't scale at the same rate as smaller text. Nonlinear font scaling helps preserve the proportional hierarchy between elements of different sizes while mitigating issues with linear text scaling at high degrees (such as text being cut off or text that becomes harder to read due to an extremely large display sizes).
Test your app with nonlinear font scaling
If you already use scaled pixels (sp) units to define text sizing, then these additional options and scaling improvements are applied automatically to the text in your app. However, you should still perform UI testing with the maximum font size enabled (200%) to ensure that your app applies the font sizes correctly and can accommodate larger font sizes without impacting usability.
To enable 200% font size, follow these steps:
- Open the Settings app and navigate to Accessibility > Display size and text.
- For the Font size option, tap the plus (+) icon until the maximum font size setting is enabled, as shown in the image that accompanies this section.
Use scaled pixel (sp) units for text-sizes
Remember to always specify text sizes in sp units. When your app uses sp units, Android can apply the user's preferred text size and scale it appropriately.
Don't use sp units for padding or define view heights assuming implicit padding: with nonlinear font scaling sp dimensions might not be proportional, so 4sp + 20sp might not equal 24sp.
Convert scaled pixel (sp) units
Use TypedValue.applyDimension()
to convert from sp units
to pixels, and use TypedValue.deriveDimension()
to
convert pixels to sp. These methods apply the appropriate nonlinear scaling
curve automatically.
Avoid hardcoding equations using
Configuration.fontScale
or
DisplayMetrics.scaledDensity
. Because font scaling is
nonlinear, the scaledDensity
field is no longer accurate. The fontScale
field should be used for informational purposes only because fonts are no longer
scaled with a single scalar value.
Use sp units for lineHeight
Always define android:lineHeight
using sp units instead
of dp, so the line height scales along with your text. Otherwise, if your text
is sp but your lineHeight
is in dp or px, it doesn't scale and looks cramped.
TextView automatically corrects the lineHeight
so that your intended
proportions are preserved, but only if both textSize
and lineHeight
are
defined in sp units.
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 la información del sensor cuando tomas una foto, lo que permite colores y un mayor contraste. Android usa el formato Ultra HDR. que es totalmente retrocompatible con imágenes JPEG, lo que permite que las aplicaciones interoperar con imágenes HDR, mostrándolas en rango dinámico estándar (SDR) como según sea necesario.
El framework renderiza estas imágenes en la IU en HDR automáticamente.
cuando tu app habilita el uso de IU HDR para su ventana de actividad, ya sea mediante una
de registro o durante el tiempo de ejecución llamando 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, vista posterior y mucho más en las extensiones de cámara
Android 14 se actualiza y mejora las extensiones de cámara, lo que permite que las apps controlen tiempos de procesamiento más largos, lo que habilita imágenes mejoradas con algoritmos de procesamiento intensivo, como fotografías con poca luz en dispositivos compatibles. Estas funciones les brindan a los usuarios una experiencia aún más sólida cuando usan las capacidades de extensión de la cámara. Estos son algunos ejemplos de estas mejoras:
- La estimación dinámica de la latencia de procesamiento de capturas estáticas proporciona estimaciones de latencia de capturas igualmente precisas basadas en la escena y las condiciones del entorno actuales. 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 operaciones de procesamiento de captura y de larga duración. Puedes verificar si esta función está disponible con
CameraExtensionCharacteristics.isCaptureProcessProgressAvailable
y, si lo está, implementa la devolución de llamadaonCaptureProcessProgressed()
, que tiene el progreso (de 0 a 100) pasado como parámetro. Metadatos específicos de extensiones, como
CaptureRequest.EXTENSION_STRENGTH
, para marcar la cantidad de un efecto de extensión (por ejemplo, el desenfoque del fondo conEXTENSION_BOKEH
)Función de posvista para la captura estática en las extensiones de la cámara, que proporciona una imagen menos procesada más rápido que la imagen final. Si una extensión aumentó la latencia de procesamiento, se podría proporcionar una imagen posterior a la vista como marcador de posición para mejorar la UX y cambiarla más tarde por la imagen final. Puedes verificar si esta función está disponible con
CameraExtensionCharacteristics.isPostviewAvailable
. Luego, puedes pasar unOutputConfiguration
aExtensionSessionConfiguration.setPostviewOutputConfiguration
.La compatibilidad con
SurfaceView
, lo que permite obtener una ruta de renderización de vista previa más optimizada y con mayor eficiencia energéticaCompatibilidad con la función de presionar para enfocar y hacer zoom 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
时,您的应用可以使用高级传感器功能,通过使用 CaptureRequest
以及数据流用例设置为 CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
的 RAW 目标,为剪裁后的 RAW 数据流提供与完整视野相同的像素。通过实现请求替换控件,更新后的摄像头让用户可在其他摄像头控件准备就绪之前实现缩放控制。
Audio USB sin pérdida
Android 14 开始支持无损音频格式,通过 USB 有线耳机提供发烧级体验。您可以查询 USB 设备的首选混音器属性,注册监听器以监听首选混音器属性的变化,并使用 AudioMixerAttributes
类配置混音器属性。此类表示格式,例如声道掩码、采样率和混音器行为。该类允许直接发送音频,而不进行混音、音量调整或处理效果。
Productividad y herramientas para desarrolladores
Credential Manager
Android 14 添加了 Credential Manager 作为平台 API,并通过使用 Google Play 服务的 Jetpack 库为 Android 4.4(API 级别 19)设备提供了额外的支持。凭据管理器旨在使用 API 通过用户配置的凭据提供程序检索和存储凭据,让用户更轻松地登录。凭据管理器在一个 API 中支持多种登录方法,包括用户名和密码、通行密钥和联合登录解决方案(如“使用 Google 账号登录”)。
通行密钥具有许多优势。例如,通行密钥基于业界标准构建,可在不同的操作系统和浏览器生态系统中使用,还可用于网站和应用。
如需了解详情,请参阅凭据管理器和通行密钥文档以及关于 Credential Manager 和通行密钥的博文。
Health Connect
Health Connect es un repositorio integrado en el dispositivo que contiene datos de salud y actividad física de los usuarios. 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. Primeros pasos con Android 14, Health Connect es parte de la plataforma y recibe actualizaciones a través de Google Reproduce el sistema sin necesidad de realizar una descarga independiente. Con esto, Health Connect se puede actualizar con frecuencia, y tus apps pueden confiar en Health Connect. estén disponibles en dispositivos con Android 14 o versiones posteriores. Los usuarios pueden acceder a Salud Conéctate 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 el ejercicio de entrenamiento, lo que les permite 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 una ventana de y tu app puede insertar rutas en sesiones de ejercicio y vincularlas entre sí. Para garantizar que los usuarios tengan control total sobre estos datos sensibles, los usuarios 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 Salud de Android.
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 la 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 los APKs se escriben en la sesión de instalación y la sesión se confirma.
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 habilita la aplicación forzosa de la propiedad de las actualizaciones, lo que significa que solo el propietario de la actualización puede instalar actualizaciones automáticas en la app. La aplicación de la propiedad de actualizaciones ayuda a garantizar que los usuarios reciban actualizaciones solo de la tienda de aplicaciones esperada.
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, se perderá la propiedad de la actualización.
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 deben 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 del paquete 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
为了打造更加标准化的屏幕截图检测体验,Android 14 引入了可保护隐私的屏幕截图检测 API。借助此 API,应用可以按 activity 注册回调。如果用户在该 activity 可见时截取屏幕截图,系统会调用这些回调并通知用户。
Experiencia del usuario
Acciones personalizadas y clasificación mejorada de Sharesheet
Android 14 更新了系统 Sharesheet,以便为用户提供自定义应用操作和信息更丰富的预览结果。
添加自定义操作
借助 Android 14,您的应用可以 向其调用的系统 Sharesheet 添加自定义操作。
提高直接共享目标的排名
Android 14 根据来自应用的更多信号来确定直接 分享目标,以便为用户提供更实用的结果。 若要提供最有用的排名信号,请遵循 提高直接共享目标的排名。 通信应用还可以报告以下内容的快捷方式使用情况: 外发和传入的邮件
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 de dispositivos con pantalla grande
借助按应用替换项,设备制造商可以更改应用在大屏设备上的行为。例如,FORCE_RESIZE_APP
替换项会指示系统调整应用大小以适应显示屏尺寸(避免进入尺寸兼容模式),即使在应用清单中设置了 resizeableActivity="false"
也是如此。
替换项旨在改善大屏设备上的用户体验。
借助新的清单属性,您可以为应用停用某些设备制造商替换项。
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 para Android 14 permite a los usuarios aplicar anulaciones por app mediante un nuevo menú de configuración en dispositivos con pantalla grande.
Compartir pantalla de una app
应用屏幕共享功能让用户能够在录制屏幕内容期间共享应用窗口,而非整个设备屏幕。
使用应用屏幕共享时,状态栏、导航栏、通知和其他系统界面元素会从共享显示屏中排除。系统只会分享所选应用的内容。
应用屏幕共享可让用户运行多个应用,但仅限单个应用共享内容,从而提高效率和隐私性。
Respuesta inteligente potenciada por LLM en Gboard en el Pixel 8 Pro
在附带 12 月功能更新版的 Pixel 8 Pro 设备上,开发者可以在 Gboard 中体验更优质的智能回复,该功能由在 Google Tensor 上运行的设备端大型语言模型 (LLM) 提供支持。
此功能目前仅在 WhatsApp、Line 和 KakaoTalk 中推出美式英语的有限预览版。该功能需要使用一部支持 Gboard 的 Pixel 8 Pro 设备作为键盘。
如需试用,请先依次选择设置 > 开发者选项 > AiCore 设置 > 启用 Aicore Persistent 以启用该功能。
接下来,在受支持的应用中打开对话,以在 Gboard 的建议栏中看到由 LLM 提供支持的智能回复,以便响应收到的消息。
Gráficos
Las rutas de acceso son interpolables y consultables
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 长期支持绘制具有自定义着色的三角形网格,但输入网格格式被限制为几种预定义的属性组合。Android 14 增加了对自定义网格的支持,自定义网格可定义为三角形或三角形带,并且可以视需要编入索引。这些网格通过自定义属性、顶点步长、转换以及用 AGSL 编写的顶点和片段着色器指定。
顶点着色器定义变化,例如位置和颜色,而 fragment 着色器可以选择定义像素的颜色,通常通过使用顶点着色器创建的变化。如果 fragment 着色器提供了颜色,则它会使用绘制网格时选择的混合模式与当前的 Paint
颜色混合。您可以将 uniform 传递到 fragment 和顶点着色器中,以提高灵活性。
Renderizador 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.