Android 14 offre aux développeurs d'excellentes fonctionnalités et API. Les sections suivantes vous permettent d'en savoir plus sur les fonctionnalités de vos applications et de faire vos premiers pas avec les API associées.
Pour obtenir une liste détaillée des API ajoutées, modifiées et supprimées, consultez le rapport de différences des API. Pour en savoir plus sur les API ajoutées, consultez la documentation de référence des API Android. Pour Android 14, recherchez les API ajoutées au niveau d'API 34. Pour en savoir plus sur les domaines dans lesquels les modifications de la plate-forme peuvent affecter vos applications, consultez les modifications de comportement d'Android 14 pour les applications qui ciblent Android 14 et pour toutes les applications.
Internationalisation
Préférences linguistiques par application
Android 14 expands on the per-app language features that were introduced in Android 13 (API level 33) with these additional capabilities:
Automatically generate an app's
localeConfig
: Starting with Android Studio Giraffe Canary 7 and AGP 8.1.0-alpha07, you can configure your app to support per-app language preferences automatically. Based on your project resources, the Android Gradle plugin generates theLocaleConfig
file and adds a reference to it in the final manifest file, so you no longer have to create or update the file manually. AGP uses the resources in theres
folders of your app modules and any library module dependencies to determine the locales to include in theLocaleConfig
file.Dynamic updates for an app's
localeConfig
: Use thesetOverrideLocaleConfig()
andgetOverrideLocaleConfig()
methods inLocaleManager
to dynamically update your app's list of supported languages in the device's system settings. Use this flexibility to customize the list of supported languages per region, run A/B experiments, or provide an updated list of locales if your app utilizes server-side pushes for localization.App language visibility for input method editors (IMEs): IMEs can utilize the
getApplicationLocales()
method to check the language of the current app and match the IME language to that language.
API Grammatical Inflection
3 milliards de personnes parlent des langues genrées : des langues dont les catégories grammaticales, telles que les noms, verbes, adjectifs et prépositions, s'accordent en fonction du genre des personnes et des objets auxquels on s'adresse ou dont on parle. Traditionnellement, de nombreuses langues genrées utilisent le genre grammatical masculin comme genre par défaut ou générique.
S'adresser à une personne en utilisant le mauvais genre grammatical, par exemple s'adresser à une femme en utilisant le genre masculin, peut avoir un impact négatif sur ses performances et son attitude. En revanche, une interface utilisateur dont le langage reflète correctement le genre grammatical de l'utilisateur ou de l'utilisatrice peut améliorer l'engagement et fournir une expérience utilisateur plus personnalisée et naturelle.
Pour vous aider à localiser une UI axée sur l'utilisateur dans une langue genrée, Android 14 introduit l'API Grammatical Inflection, qui permet d'ajouter une prise en charge du genre grammatical sans refactoriser votre application.
Préférences régionales
Les préférences régionales permettent aux utilisateurs de personnaliser les unités de température, le premier jour de la semaine et les systèmes de numérotation. Une personne européenne vivant aux États-Unis peut préférer que les unités de température soient exprimées en Celsius plutôt qu'en Fahrenheit, et que les applications considèrent le lundi comme le début de la semaine et non le dimanche, comme c'est le cas aux États-Unis.
Les nouveaux menus des paramètres Android correspondant à ces préférences offrent aux utilisateurs un emplacement centralisé et visible pour modifier les préférences des applications. Ces préférences sont également conservées lors de la sauvegarde et de la restauration. Plusieurs API et intents, tels que getTemperatureUnit
et getFirstDayOfWeek
, autorisent votre application l'accès en lecture aux préférences utilisateur afin que votre application puisse ajuster la façon dont elle affiche les informations. Vous pouvez également enregistrer un BroadcastReceiver
sur ACTION_LOCALE_CHANGED
pour gérer les modifications de configuration des paramètres régionaux lorsque les préférences régionales changent.
Pour accéder à ces paramètres, ouvrez l'application Paramètres et accédez à System > Languages & input > Regional preferences (Système > Langues et saisie > Préférences régionales).
Accessibilité
Mise à l'échelle non linéaire de la police à 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.
Appareil photo et contenus multimédias
Ultra HDR pour les images
Android 14 est compatible avec les images HDR (High Dynamic Range) qui conservent une plus grande partie des informations du capteur lorsque vous prenez une photo, ce qui permet d'obtenir des couleurs vives et un contraste plus élevé. Android utilise le format Ultra HDR, qui est entièrement rétrocompatible avec les images JPEG, ce qui permet aux applications d'interagir de manière fluide avec les images HDR, en les affichant en plage dynamique standard (SDR) si nécessaire.
Le rendu de ces images dans l'interface utilisateur en HDR est effectué automatiquement par le framework lorsque votre application accepte d'utiliser l'interface utilisateur HDR pour sa fenêtre d'activité, soit via une entrée de fichier manifeste, soit au moment de l'exécution en appelant Window.setColorMode()
. Vous pouvez également capturer des images fixes Ultra HDR compressées sur les appareils compatibles. En récupérant davantage de couleurs à partir du capteur, vous pouvez effectuer des modifications dans l'application de façon plus flexible. Le Gainmap
associé aux images Ultra HDR peut être utilisé pour les afficher à l'aide d'OpenGL ou de Vulkan.
Zoom, Mise au point, Postview et plus dans les extensions Appareil photo
Android 14 upgrades and improves camera extensions, allowing apps to handle longer processing times, which enables improved images using compute-intensive algorithms like low-light photography on supported devices. These features give users an even more robust experience when using camera extension capabilities. Examples of these improvements include:
- Dynamic still capture processing latency estimation provides much more
accurate still capture latency estimates based on the current scene and
environment conditions. Call
CameraExtensionSession.getRealtimeStillCaptureLatency()
to get aStillCaptureLatency
object that has two latency estimation methods. ThegetCaptureLatency()
method returns the estimated latency betweenonCaptureStarted
andonCaptureProcessStarted()
, and thegetProcessingLatency()
method returns the estimated latency betweenonCaptureProcessStarted()
and the final processed frame being available. - Support for capture progress callbacks so that apps can display the current
progress of long-running, still-capture processing operations. You can check
if this feature is available with
CameraExtensionCharacteristics.isCaptureProcessProgressAvailable
, and if it is, you implement theonCaptureProcessProgressed()
callback, which has the progress (from 0 to 100) passed in as a parameter. Extension specific metadata, such as
CaptureRequest.EXTENSION_STRENGTH
for dialing in the amount of an extension effect, such as the amount of background blur withEXTENSION_BOKEH
.Postview Feature for Still Capture in camera extensions, which provides a less-processed image more quickly than the final image. If an extension has increased processing latency, a postview image could be provided as a placeholder to improve UX and switched out later for the final image. You can check if this feature is available with
CameraExtensionCharacteristics.isPostviewAvailable
. Then you can pass anOutputConfiguration
toExtensionSessionConfiguration.setPostviewOutputConfiguration
.Support for
SurfaceView
allowing for a more optimized and power-efficient preview render path.Support for tap to focus and zoom during extension usage.
Zoom dans le capteur
Lorsque REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE
dans CameraCharacteristics
contient SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
, votre application peut utiliser les fonctionnalités avancées du capteur pour donner à un flux RAW recadré les mêmes pixels que le champ de vision complet en utilisant un CaptureRequest
avec une cible RAW dont le cas d'utilisation du flux est défini sur CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
.
En implémentant les commandes de forçage de la requête, la caméra mise à jour permet aux utilisateurs de contrôler le zoom avant même que les autres commandes de la caméra soient prêtes.
Audio USB sans perte
Android 14 prend en charge les formats audio sans perte pour les expériences de niveau audiophile via les casques USB filaires. Vous pouvez interroger un appareil USB pour connaître ses attributs de mélangeur préférés, enregistrer un écouteur pour connaître les modifications de ces attributs et configurer ces attributs à l'aide de la classe AudioMixerAttributes
. Cette classe représente le format, tel que le masque de canal, le taux d'échantillonnage et le comportement du mélangeur audio. La classe permet d'envoyer directement du contenu audio, sans mixage, ajustement du volume ni effets de traitement.
Productivité et outils des développeurs
Credential Manager
Android 14 adds Credential Manager as a platform API, with additional support back to Android 4.4 (API level 19) devices through a Jetpack Library using Google Play services. Credential Manager aims to make sign-in easier for users with APIs that retrieve and store credentials with user-configured credential providers. Credential Manager supports multiple sign-in methods, including username and password, passkeys, and federated sign-in solutions (such as Sign-in with Google) in a single API.
Passkeys provide many advantages. For example, passkeys are built on industry standards, can work across different operating systems and browser ecosystems, and can be used with both websites and apps.
For more information, see the Credential Manager and passkeys documentation and the blogpost about Credential Manager and passkeys.
Santé Connect
Santé Connect est un dépôt sur l'appareil contenant les données de santé et de remise en forme des utilisateurs. Il permet aux utilisateurs de partager des données entre leurs applications préférées, avec un seul endroit pour contrôler les données qu'ils souhaitent partager avec ces applications.
Sur les appareils exécutant des versions d'Android antérieures à Android 14, Santé Connect peut être téléchargée en tant qu'application sur le Google Play Store. À partir d'Android 14, Santé Connect fait partie de la plate-forme et reçoit les mises à jour via les mises à jour du système Google Play sans qu'un téléchargement distinct soit nécessaire. Santé Connect peut ainsi être mis à jour fréquemment, et vos applications peuvent s'assurer que Santé Connect est disponible sur les appareils équipés d'Android 14 ou version ultérieure. Les utilisateurs peuvent accéder à Santé Connect depuis les paramètres de leur appareil, et les paramètres de confidentialité sont intégrés aux paramètres système.
Santé Connect inclut plusieurs nouvelles fonctionnalités dans Android 14, comme les parcours sportifs, qui permettent aux utilisateurs de partager un parcours de leur entraînement qui peut être visualisé sur une carte. Un itinéraire est défini comme une liste de lieux enregistrés pendant une période donnée. Votre application peut insérer des itinéraires dans des sessions d'exercice, en les associant. Pour s'assurer que les utilisateurs ont un contrôle total sur ces données sensibles, ils doivent autoriser le partage de routes individuelles avec d'autres applications.
Pour en savoir plus, consultez la documentation de Santé Connection et l'article de blog sur les Nouveautés d'Android Health.
Mises à jour OpenJDK 17
Android 14 continues the work of refreshing Android's core libraries to align with the features in the latest OpenJDK LTS releases, including both library updates and Java 17 language support for app and platform developers.
The following features and improvements are included:
- Updated approximately 300
java.base
classes to Java 17 support. - Text Blocks, which introduce multi-line string literals to the Java programming language.
- Pattern Matching for instanceof, which allows an object to
be treated as having a specific type in an
instanceof
without any additional variables. - Sealed classes, which allow you restrict which classes and interfaces can extend or implement them.
Thanks to Google Play system updates (Project Mainline), over 600 million devices are enabled to receive the latest Android Runtime (ART) updates that include these changes. This is part of our commitment to give apps a more consistent, secure environment across devices, and to deliver new features and capabilities to users independent of platform releases.
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Améliorations apportées aux plates-formes de téléchargement d'applications
Android 14 introduit plusieurs API PackageInstaller
qui permettent aux plates-formes de téléchargement d'applications d'améliorer leur expérience utilisateur.
Demander l'autorisation de l'installation avant le téléchargement
L'installation ou la mise à jour d'une application peut nécessiter l'approbation de l'utilisateur.
Par exemple, lorsqu'un programme d'installation utilisant l'autorisation REQUEST_INSTALL_PACKAGES
tente d'installer une nouvelle application. Dans les versions précédentes d'Android, les plates-formes de téléchargement d'applications ne peuvent demander l'approbation de l'utilisateur qu'après que les APK ont été écrits dans la session d'installation et que la session a été validée.
À partir d'Android 14, la méthode requestUserPreapproval()
permet aux installateurs de demander l'approbation de l'utilisateur avant de lancer la session d'installation. Cette amélioration permet à une plate-forme de téléchargement d'applications de différer le téléchargement des APK jusqu'à ce que l'installation ait été autorisée par l'utilisateur. En outre, une fois qu'un utilisateur a autorisé l'installation de l'application, la plate-forme de téléchargement d'applications peut la télécharger et l'installer en arrière-plan sans interrompre l'utilisateur.
Revendiquer la responsabilité des prochaines mises à jour
La méthode setRequestUpdateOwnership()
permet à un programme d'installation d'indiquer au système qu'il sera responsable des futures mises à jour d'une application qu'il installe. Cette fonctionnalité permet d'appliquer la propriété des mises à jour, ce qui signifie que seul le propriétaire de la mise à jour est autorisé à installer des mises à jour automatiques de l'application. L'application forcée de la propriété des mises à jour permet de s'assurer que les utilisateurs ne reçoivent les mises à jour que depuis la plate-forme de téléchargement d'applications attendue.
Tout autre programme d'installation, y compris ceux utilisant l'autorisation INSTALL_PACKAGES
, doit recevoir l'approbation explicite de l'utilisateur pour installer une mise à jour. Si un utilisateur décide de procéder à une mise à jour à partir d'une autre source, la propriété de la mise à jour est perdue.
Mettre à jour les applications au meilleur moment
Les plates-formes de téléchargement d'applications évitent généralement de mettre à jour une application en cours d'utilisation, car cela entraîne la fermeture des processus en cours d'exécution, ce qui peut potentiellement interrompre l'activité de l'utilisateur.
À partir d'Android 14, l'API InstallConstraints
permet aux programmes d'installation de s'assurer que les mises à jour de leurs applications sont effectuées au moment opportun. Par exemple, une plate-forme de téléchargement d'applications peut appeler la méthode commitSessionAfterInstallConstraintsAreMet()
pour s'assurer qu'une mise à jour n'est validée que lorsque l'utilisateur n'interagit plus avec l'application en question.
Installer facilement des divisions facultatives
Avec les APK divisés, les fonctionnalités d'une application peuvent être distribuées dans des fichiers APK distincts plutôt que sous forme d'un APK monolithique. Les APK divisés permettent aux plates-formes de téléchargement d'applications d'optimiser la distribution des différents composants de l'application. Par exemple, les plates-formes de téléchargement d'applications peuvent être optimisées en fonction des propriétés de l'appareil cible. L'API PackageInstaller
accepte les divisions depuis son lancement au niveau d'API 22.
Dans Android 14, la méthode setDontKillApp()
permet à un programme d'installation d'indiquer que les processus en cours d'exécution de l'application ne doivent pas être supprimés lorsque de nouvelles divisions sont installées. Les plates-formes de téléchargement d'applications peuvent utiliser cette fonctionnalité pour installer facilement de nouvelles fonctionnalités d'une application lorsque l'utilisateur l'utilise.
Groupes de métadonnées d'application
À partir d'Android 14, le programme d'installation du package Android vous permet de spécifier des métadonnées d'application, telles que des pratiques en matière de sécurité des données, à inclure sur les pages de la plate-forme de téléchargement d'applications telles que Google Play.
Détecter quand les utilisateurs prennent des captures d'écran de l'appareil
Pour créer une expérience plus standardisée, Android 14 introduit une API de détection des captures d'écran protégeant la confidentialité. Cette API permet aux applications d'enregistrer des rappels par activité. Ces rappels sont appelés, et l'utilisateur en est informé lorsqu'une capture d'écran est prise et que cette activité est visible.
Expérience utilisateur
Actions personnalisées Sharesheet et classement amélioré
Android 14 updates the system sharesheet to support custom app actions and more informative preview results for users.
Add custom actions
With Android 14, your app can add custom actions to the system sharesheet it invokes.
Improve ranking of Direct Share targets
Android 14 uses more signals from apps to determine the ranking of the direct share targets to provide more helpful results for the user. To provide the most useful signal for ranking, follow the guidance for improving rankings of your Direct Share targets. Communication apps can also report shortcut usage for outgoing and incoming messages.
Prise en charge des animations intégrées et personnalisées pour la prévisualisation du Retour
Android 13 introduced the predictive back-to-home animation behind a developer option. When used in a supported app with the developer option enabled, swiping back shows an animation indicating that the back gesture exits the app back to the home screen.
Android 14 includes multiple improvements and new guidance for Predictive Back:
- You can set
android:enableOnBackInvokedCallback=true
to opt in to predictive back system animations per-Activity instead of for the entire app. - We've added new system animations to accompany the back-to-home animation from Android 13. The new system animations are cross-activity and cross-task, which you get automatically after migrating to Predictive Back.
- We've added new Material Component animations for Bottom sheets, Side sheets, and Search.
- We've created design guidance for creating custom in-app animations and transitions.
- We've added new APIs to support custom in-app transition animations:
handleOnBackStarted
,handleOnBackProgressed
,handleOnBackCancelled
in
OnBackPressedCallback
onBackStarted
,onBackProgressed
,onBackCancelled
in
OnBackAnimationCallback
- Use
overrideActivityTransition
instead ofoverridePendingTransition
for transitions that respond as the user swipes back.
With this Android 14 preview release, all features of Predictive Back remain behind a developer option. See the developer guide to migrate your app to predictive back, as well as the developer guide to creating custom in-app transitions.
Forçages par application du fabricant des appareils à grand écran
Les forçages par application permettent aux fabricants d'appareils de modifier le comportement des applications sur les appareils à grand écran. Par exemple, le forçage FORCE_RESIZE_APP
indique au système de redimensionner l'application pour qu'elle s'adapte aux dimensions d'affichage (en évitant le mode de compatibilité de taille), même si resizeableActivity="false"
est défini dans le fichier manifeste de l'application.
Les remplacements sont destinés à améliorer l'expérience utilisateur sur les grands écrans.
Les nouvelles propriétés de fichier manifeste vous permettent de désactiver certains forçages du fabricant de l'appareil pour votre application.
Forçages par application pour les utilisateurs sur grand écran
Les forçages par application modifient le comportement des applications sur les appareils à grand écran. Par exemple, le forçage du fabricant de l'appareil OVERRIDE_MIN_ASPECT_RATIO_LARGE
définit le format de l'application sur 16:9, quelle que soit sa configuration.
Android 14 QPR1 permet aux utilisateurs d'appliquer des forçages par application à l'aide d'un nouveau menu de paramètres sur les appareils à grand écran.
Partager le contenu d'une appli sur l'écran
Le partage d'écran de l'application permet aux utilisateurs de partager une fenêtre de l'application au lieu de l'intégralité de l'écran de l'appareil pendant l'enregistrement du contenu.
Avec le partage d'écran de l'application, la barre d'état, la barre de navigation, les notifications et les autres éléments d'UI du système sont exclus de l'écran partagé. Seul le contenu de l'application sélectionnée est partagé.
Le partage d'écran d'application améliore la productivité et la confidentialité en permettant aux utilisateurs d'exécuter plusieurs applications, mais en limitant le partage de contenu à une seule application.
Réponse suggérée basée sur un LLM dans Gboard sur le Pixel 8 Pro
On Pixel 8 Pro devices with the December Feature Drop, developers can try out higher-quality smart replies in Gboard powered by on-device Large Language Models (LLMs) running on Google Tensor.
This feature is available as a limited preview for US English in WhatsApp, Line, and KakaoTalk. It requires using a Pixel 8 Pro device with Gboard as your keyboard.
To try it out, first enable the feature in Settings > Developer Options > AiCore Settings > Enable Aicore Persistent.
Next, open a conversation in a supported app to see LLM-powered Smart Reply in Gboard's suggestion strip in response to incoming messages.
Graphismes
Les chemins sont interrogeables et interpolables
L'API Path
d'Android est un mécanisme puissant et flexible permettant
créer et afficher des graphiques vectoriels, avec la possibilité de tracer ou de remplir
créer un tracé à partir de segments de droite ou de courbes quadratiques ou cubiques,
des opérations booléennes pour obtenir des formes encore plus complexes,
simultanément. L'une des limites est la capacité à déterminer ce qui se trouve réellement dans un
Objet chemin les composants internes de l'objet sont opaques pour les appelants après sa création.
Pour créer un Path
, vous appelez des méthodes telles que
moveTo()
, lineTo()
et
cubicTo()
pour ajouter des segments de chemin. Mais il n'y avait aucun moyen de
demandez à ce chemin quels sont les segments. Vous devez donc conserver ces informations
au moment de leur création.
À partir d'Android 14, vous pouvez interroger des chemins pour connaître leur contenu.
Tout d'abord, vous devez obtenir un objet PathIterator
à l'aide de la
API 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();
Vous pouvez ensuite appeler PathIterator
pour itérer les segments.
une par une, en récupérant toutes
les données nécessaires pour chaque segment. Cet exemple
utilise des objets PathIterator.Segment
, qui empaquettent les données ;
pour vous:
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
dispose également d'une version non allouée de next()
que vous pouvez transmettre
dans un tampon pour stocker les données de point.
L'interpolation est l'un des principaux cas d'utilisation des demandes de données formulées à Path
. Pour
Par exemple, vous pouvez animer (ou transformer) entre deux chemins différents. À
pour simplifier encore ce cas d'utilisation, Android 14 inclut également
interpolate()
sur Path
. En supposant que les deux chemins aient
la même structure interne, la méthode interpolate()
crée un nouveau Path
.
avec ce résultat interpolé. Cet exemple renvoie un tracé dont la forme est
Mi-chemin (interpolation linéaire de 0,5) entre path
et 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 bibliothèque Jetpack graphics-path permet d'utiliser des API similaires pour versions antérieures d'Android.
Maillages personnalisés avec des nuanceurs de sommets et de fragments
Android accepte depuis longtemps le dessin de maillages triangulaires avec ombrage personnalisé, mais le format du maillage d'entrée est limité à quelques combinaisons d'attributs prédéfinis. Android 14 est compatible avec les réseaux maillés personnalisés, qui peuvent être définis comme des triangles ou des bandes triangulaires et qui peuvent éventuellement être indexés. Ces maillages sont spécifiés avec des attributs personnalisés, des pas de sommet, des nuances variables, et des nuanceurs de sommets et de fragments écrits en AGSL.
Le nuanceur de sommets définit les variations, telles que la position et la couleur, tandis que le nuanceur de fragments peut éventuellement définir la couleur du pixel, généralement à l'aide des variables créées par le nuanceur de sommets. Si la couleur est fournie par le nuanceur de fragments, elle est ensuite fusionnée avec la couleur Paint
actuelle à l'aide du mode de combinaison sélectionné lors du dessin du maillage. Les uniformes peuvent être transmises aux nuanceurs de fragments et de sommets pour plus de flexibilité.
Moteur de rendu de tampon matériel pour Canvas
Pour faciliter l'utilisation de l'API Canvas
d'Android pour dessiner avec une accélération matérielle dans un HardwareBuffer
, Android 14 introduit HardwareBufferRenderer
. Cette API est
particulièrement utile lorsque votre cas d'utilisation implique une communication avec le système
compositeur via SurfaceControl
pour une faible latence
un dessin.