Android 14 offre aux développeurs de nouvelles fonctionnalités et API de qualité. Les sections suivantes vous présentent les nouvelles fonctionnalités disponibles pour vos applications et leurs nouvelles API.
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 savoir dans quels domaines les changements de plate-forme peuvent affecter vos applications, consultez les modifications de comportement d'Android 14 pour les applications ciblant 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 theLocaleConfigfile 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 theresfolders of your app modules and any library module dependencies to determine the locales to include in theLocaleConfigfile.Dynamic updates for an app's
localeConfig: Use thesetOverrideLocaleConfig()andgetOverrideLocaleConfig()methods inLocaleManagerto 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 son comportement 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 %
À partir d'Android 14, le système prend en charge la mise à l'échelle des polices jusqu'à 200 %, offrant ainsi aux utilisateurs déficients visuels des options d'accessibilité supplémentaires qui respectent les consignes d'accessibilité du contenu Web (WCAG).
Pour éviter que les éléments de texte de grande taille ne soient trop grands à l'écran, le système applique une courbe de mise à l'échelle non linéaire. Cette stratégie de mise à l'échelle signifie que le texte de grande taille n'a pas le même niveau de mise à l'échelle que le texte de petite taille. La mise à l'échelle non linéaire de la police permet de préserver la hiérarchie proportionnelle entre des éléments de différentes tailles, tout en limitant les problèmes liés à la mise à l'échelle linéaire du texte à des degrés élevés (par exemple, le texte coupé ou le texte qui est plus difficile à lire sur de très grands écrans).
Tester votre application avec la mise à l'échelle non linéaire de la police
Si vous utilisez déjà des unités de pixels mis à l'échelle (sp) pour définir la taille du texte, ces d'autres options et des améliorations de scaling sont appliquées automatiquement du texte dans votre application. Toutefois, vous devez quand même effectuer des tests de l'interface utilisateur avec la taille de police activée (200%) pour vous assurer que votre application les applique correctement et peut s'adapter à des tailles de police plus grandes sans nuire à la facilité d'utilisation.
Pour activer la taille de police 200 %, procédez comme suit :
- Ouvrez l'application Paramètres, puis accédez à Accessibility > Display size and text (Accessibilité > Taille d'affichage et texte).
- Pour l'option Font size (Taille de la police), appuyez sur l'icône plus (+) jusqu'à ce que le paramètre de taille de police maximale soit activé, comme illustré sur l'image.
Utiliser des unités de pixels mis à l'échelle (sp) pour les tailles de texte
N'oubliez pas de toujours spécifier la taille du texte en unités sp. Lorsque votre application utilise des unités de pixels mis à l'échelle, Android peut appliquer la taille de texte préférée de l'utilisateur et la mettre à l'échelle.
N'utilisez pas les unités de pixels mis à l'échelle pour les marges intérieures ni ne définissez les hauteurs de vue en supposant une marge intérieure implicite. Avec une mise à l'échelle non linéaire de la police, les dimensions des pixels mis à l'échelle peuvent ne pas être proportionnelles. Par conséquent, 4sp + 20sp peut ne pas être égal à 24sp.
Convertir les unités de pixels mis à l'échelle (sp)
Utilisez TypedValue.applyDimension() pour convertir des unités de sp en pixels et TypedValue.deriveDimension() pour convertir des pixels en sp. Ces méthodes appliquent automatiquement la courbe de mise à l'échelle non linéaire appropriée.
Évitez de coder les équations en dur en utilisant
Configuration.fontScale ou
DisplayMetrics.scaledDensity. La mise à l'échelle de la police n'étant pas linéaire, le champ scaledDensity n'est plus précis. Le champ fontScale ne doit être utilisé qu'à des fins d'information, car les polices ne sont plus mises à l'échelle avec une seule valeur scalaire.
Utiliser des unités sp pour lineHeight
Toujours définir android:lineHeight à l'aide d'unités de sp
de dp afin que la hauteur de la ligne s'adapte à votre texte. Sinon, si votre texte
est de sp, mais votre lineHeight est en dp ou px, elle n'est pas à l'échelle et semble surchargée.
TextView corrige automatiquement les lineHeight pour qu'elles correspondent
proportions sont conservées, mais uniquement si textSize et lineHeight sont tous les deux
défini en unités de pixels mis à l'échelle.
Appareil photo et médias
Ultra HDR pour les images
Android 14 adds support for High Dynamic Range (HDR) images that retain more of the information from the sensor when taking a photo, which enables vibrant colors and greater contrast. Android uses the Ultra HDR format, which is fully backward compatible with JPEG images, allowing apps to seamlessly interoperate with HDR images, displaying them in Standard Dynamic Range (SDR) as needed.
Rendering these images in the UI in HDR is done automatically by the framework
when your app opts in to using HDR UI for its Activity Window, either through a
manifest entry or at runtime by calling
Window.setColorMode(). You can also capture compressed Ultra
HDR still images on supported devices. With more colors recovered
from the sensor, editing in post can be more flexible. The
Gainmap associated with Ultra HDR images can be used to render
them using OpenGL or Vulkan.
Zoom, mise au point, post-visualisation et plus encore dans les extensions de caméras
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 aStillCaptureLatencyobject that has two latency estimation methods. ThegetCaptureLatency()method returns the estimated latency betweenonCaptureStartedandonCaptureProcessStarted(), 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_STRENGTHfor 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 anOutputConfigurationtoExtensionSessionConfiguration.setPostviewOutputConfiguration.Support for
SurfaceViewallowing for a more optimized and power-efficient preview render path.Support for tap to focus and zoom during extension usage.
Zoom dans le capteur
When REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE in
CameraCharacteristics contains
SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW, your app
can use advanced sensor capabilities to give a cropped RAW stream the same
pixels as the full field of view by using a CaptureRequest
with a RAW target that has stream use case set to
CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW.
By implementing the request override controls, the updated camera gives users
zoom control even before other camera controls are ready.
Audio USB sans perte
Android 14 est compatible avec les formats audio sans perte pour des expériences audiophiles via des casques filaires USB. Vous pouvez interroger un appareil USB pour ses attributs de mixeur préférés, enregistrer un écouteur pour les modifications apportées aux attributs de mixeur préférés et configurer les attributs de mixeur à l'aide de la classe AudioMixerAttributes. Cette classe représente le format, comme le masque de canal, le taux d'échantillonnage et le comportement du mixeur audio. La classe permet d'envoyer directement l'audio, sans mélange, réglage du volume ni effets de traitement.
Productivité et outils pour les développeurs
Gestionnaire d'identifiants
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
Health Connect is an on-device repository for user health and fitness data. It allows users to share data between their favorite apps, with a single place to control what data they want to share with these apps.
On devices running Android versions prior to Android 14, Health Connect is available to download as an app on the Google Play store. Starting with Android 14, Health Connect is part of the platform and receives updates through Google Play system updates without requiring a separate download. With this, Health Connect can be updated frequently, and your apps can rely on Health Connect being available on devices running Android 14 or higher. Users can access Health Connect from the Settings in their device, with privacy controls integrated into the system settings.
Health Connect includes several new features in Android 14, such as exercise routes, allowing users to share a route of their workout which can be visualized on a map. A route is defined as a list of locations saved within a window of time, and your app can insert routes into exercise sessions, tying them together. To ensure that users have complete control over this sensitive data, users must allow sharing individual routes with other apps.
For more information, see the Health Connection documentation and the blogpost on What's new in Android Health.
Mises à jour OpenJDK 17
Android 14 poursuit le travail d'actualisation des principales bibliothèques Android afin de s'adapter aux fonctionnalités des dernières versions d'OpenJDK LTS, y compris les mises à jour de la bibliothèque et la compatibilité avec le langage Java 17 pour les développeurs d'applications et de plates-formes.
Les fonctionnalités et améliorations suivantes sont incluses :
- Mise à jour d'environ 300 classes
java.basepour la prise en charge de Java 17. - Les blocs de texte, qui introduisent des littéraux de chaîne multilignes dans le langage de programmation Java.
- La correspondance de structure pour instanceof, qui permet de traiter un objet comme ayant un type spécifique dans une
instanceofsans aucune variable supplémentaire. - Les classes scellées, qui vous permettent de limiter les classes et les interfaces pouvant les étendre ou les implémenter.
Grâce aux mises à jour du système Google Play (projet Mainline), plus de 600 millions d'appareils sont compatibles avec les dernières mises à jour d'Android Runtime (ART) qui incluent ces modifications. Tout ceci fait partie de notre engagement à fournir aux applications un environnement plus cohérent et sécurisé sur tous les appareils, et à proposer de nouvelles fonctionnalités aux utilisateurs indépendamment des versions de la plate-forme.
Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
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'autorisation de l'utilisateur.
Par exemple, lorsqu'un programme d'installation qui utilise 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 pouvaient demander l'autorisation de l'utilisateur qu'une fois les APK écrits dans la session d'installation et que la session était lancée.
À partir d'Android 14, la méthode requestUserPreapproval() permet aux installateurs de demander l'autorisation 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 a l'intention d'être responsable des futures mises à jour d'une application qu'il installe. Cette fonctionnalité active l'application forcée de la propriété de la mise à jour, ce qui signifie que seul le propriétaire des mises à jour est autorisé à installer des mises à jour automatiques de l'application. L'application forcée de la propriété de la mise à jour permet de s'assurer que les utilisateurs ne reçoivent des 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 une 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 leur application 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 lancé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 est compatible avec 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 les nouvelles fonctionnalités d'une application lorsque l'utilisateur l'utilise.
Bundles 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 sur votre application, telles que les 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 met à jour la Sharesheet du système afin de prendre en charge les actions personnalisées dans l'application et les résultats d'aperçu plus détaillés pour les utilisateurs.
Ajouter des actions personnalisées
Avec Android 14, votre application peut ajouter des actions personnalisées à la Sharesheet du système qu'elle appelle.
Améliorer le classement des cibles de partage direct
Android 14 utilise davantage de signaux provenant d'applications pour déterminer le classement des cibles de partage direct et fournir de meilleurs résultats à l'utilisateur. Pour fournir le signal le plus utile pour le classement, suivez les conseils pour améliorer le classement de vos cibles de partage direct. Les applications de communication peuvent également signaler l'utilisation des raccourcis pour les messages sortants et entrants.
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=trueto 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,handleOnBackCancelledinOnBackPressedCallbackonBackStarted,onBackProgressed,onBackCancelledinOnBackAnimationCallback- Use
overrideActivityTransitioninstead ofoverridePendingTransitionfor 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 des fabricants d'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 de grands écrans
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 la configuration de l'application.
Android 14 QPR1 permet aux utilisateurs d'appliquer des forçages par application à l'aide d'un nouveau menu des paramètres sur les appareils à grand écran.
Partager le contenu d'une appli sur l'écran
Le partage d'écran d'application permet aux utilisateurs de partager une fenêtre d'application au lieu de l'intégralité de l'écran de l'appareil lors de l'enregistrement du contenu de l'écran.
Avec le partage d'écran de l'application, la barre d'état, la barre de navigation, les notifications et d'autres éléments d'interface utilisateur 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'une 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 optimisée par un LLM dans Gboard sur un 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.
Graphiques
Les chemins sont interrogeables et interpolables
L'API Path d'Android est un mécanisme puissant et flexible permettant de créer et d'afficher des graphiques vectoriels. Elle permet de tracer ou de remplir un tracé, de construire un tracé à partir de segments de ligne ou de courbes quadratiques ou cubiques, d'effectuer des opérations booléennes pour obtenir des formes encore plus complexes, ou tout cela simultanément. L'une des limites est la possibilité de savoir ce qui se trouve réellement dans un objet Path, une fois créés, les composants internes de l'objet sont opaques pour les appelants.
Pour créer un Path, appelez des méthodes telles que moveTo(), lineTo() et cubicTo() afin d'ajouter des segments de chemin. Cependant, il n'existe aucun moyen de lui demander quels sont les segments. Vous devez donc conserver ces informations au moment de la 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 l'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 un par un, 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 attribuée de next() dans laquelle vous pouvez transmettre 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. Par exemple, vous pouvez animer (ou transformer) entre deux chemins différents. Pour simplifier ce cas d'utilisation, Android 14 inclut également la méthode 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 également d'utiliser des API similaires pour les versions antérieures d'Android.
Mailles personnalisées avec nuanceurs de vertex et de fragments
Android has long supported drawing triangle meshes with custom shading, but the input mesh format has been limited to a few predefined attribute combinations. Android 14 adds support for custom meshes, which can be defined as triangles or triangle strips, and can, optionally, be indexed. These meshes are specified with custom attributes, vertex strides, varying, and vertex and fragment shaders written in AGSL.
The vertex shader defines the varyings, such as position and color, while the
fragment shader can optionally define the color for the pixel, typically by
using the varyings created by the vertex shader. If color is provided by the
fragment shader, it is then blended with the current Paint
color using the blend mode selected when
drawing the mesh. Uniforms can be passed
into the fragment and vertex shaders for additional flexibility.
Rendu du 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.