Android 14 offre aux développeurs d'excellentes fonctionnalités et API. L'aide suivante pour vous familiariser avec les fonctionnalités de vos applications et commencer à utiliser 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 zones où les changements de plate-forme peuvent affecter vos applis, consultez Android 14 modifications de comportement pour les applications qui ciblent Android 14 et pour toutes les applications.
Internationalisation
Préférences linguistiques par application
Android 14 développe les fonctionnalités de langage par application introduites dans Android 13 (niveau d'API 33) avec les fonctionnalités supplémentaires suivantes :
Générer automatiquement la
localeConfig
d'une application : à partir d'Android Studio Giraffe Canary 7 et AGP 8.1.0-alpha07, vous pouvez configurer votre application pour qu'elle prenne automatiquement en charge votre préférence linguistique par appli. En fonction des ressources de votre projet, le plug-in Android Gradle génère le fichierLocaleConfig
et ajoute une référence dans le fichier manifeste final. Vous n'avez donc plus besoin de créer ni de mettre à jour le fichier manuellement. Le plug-in Android Gradle utilise les ressources des dossiersres
de vos modules d'application et les dépendances des modules de la bibliothèque pour déterminer les paramètres régionaux à inclure dans le fichierLocaleConfig
.Mises à jour dynamiques pour la
localeConfig
d'une application : utilisez les méthodessetOverrideLocaleConfig()
etgetOverrideLocaleConfig()
dansLocaleManager
pour mettre à jour de façon dynamique la liste des langues disponibles de votre application dans les paramètres système de l'appareil. Utilisez cette flexibilité pour personnaliser la liste des langues disponibles par région, effectuer des tests A/B ou fournir une liste actualisée des paramètres régionaux si votre application utilise des transferts côté serveur pour la localisation.Visibilité de la langue de l'application pour les éditeurs de mode de saisie (IME) : les éditeurs de mode de saisie peuvent utiliser la méthode
getApplicationLocales()
pour vérifier la langue de l'application et choisir la même langue.
API Grammatical Inflection
有 30 亿人在使用区分性别的语言,此类语言的语法类别(例如名词、动词、形容词和介词)会根据您交谈所涉及的人或物的性别而变化。传统上,许多区分性别的语言使用阳性语法性别作为默认或通用性别。
以错误的语法性别来称呼用户,例如以阳性语法性别来称呼女性,可能会对她们的表现和态度产生负面影响。相比之下,界面语言如果能正确反映用户的语法性别,就可以提高用户互动度,并提供更个性化、更自然的用户体验。
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 %
从 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 单位(而非 dp)定义 android:lineHeight
,以便行高随文本一起缩放。否则,如果您的文本为 sp,而 lineHeight
以 dp 或 px 为单位,则文本无法缩放且看起来狭窄。TextView 会自动更正 lineHeight
以保留您预期的比例,但前提是以 sp 为单位同时定义 textSize
和 lineHeight
。
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, Postview et plus dans les extensions Appareil photo
Android 14 met à niveau et améliore les extensions d'appareil photo, ce qui permet aux applications de gérer des temps de traitement plus longs, ce qui améliore les images à l'aide d'algorithmes gourmands en calcul, comme la photographie en faible luminosité sur les appareils compatibles. Ces fonctionnalités offrent aux utilisateurs une expérience encore plus robuste lorsqu'ils utilisent les fonctionnalités d'extension de la caméra. Voici quelques exemples d'améliorations:
- L'estimation dynamique de la latence de traitement de la capture d'image fixe fournit des estimations de la latence de capture d'image fixe beaucoup plus précises en fonction de la scène et des conditions environnementales actuelles. Appelez
CameraExtensionSession.getRealtimeStillCaptureLatency()
pour obtenir un objetStillCaptureLatency
qui comporte deux méthodes d'estimation de la latence. La méthodegetCaptureLatency()
renvoie la latence estimée entreonCaptureStarted
etonCaptureProcessStarted()
, et la méthodegetProcessingLatency()
renvoie la latence estimée entreonCaptureProcessStarted()
et le frame traité final disponible. - Prise en charge des rappels de progression de la capture afin que les applications puissent afficher la progression actuelle des opérations de traitement de la capture d'image fixe de longue durée. Vous pouvez vérifier si cette fonctionnalité est disponible avec
CameraExtensionCharacteristics.isCaptureProcessProgressAvailable
. Si c'est le cas, vous implémentez le rappelonCaptureProcessProgressed()
, qui transmet la progression (de 0 à 100) en tant que paramètre. Métadonnées spécifiques à l'extension, telles que
CaptureRequest.EXTENSION_STRENGTH
pour régler l'intensité d'un effet d'extension, comme l'intensité du floutage de l'arrière-plan avecEXTENSION_BOKEH
.Fonctionnalité Postview pour la capture d'images fixes dans les extensions d'appareil photo, qui fournit une image moins traitée plus rapidement que l'image finale. Si une extension a augmenté la latence de traitement, une image post-vue peut être fournie en tant que zone réservée pour améliorer l'expérience utilisateur et être remplacée plus tard par l'image finale. Vous pouvez vérifier si cette fonctionnalité est disponible avec
CameraExtensionCharacteristics.isPostviewAvailable
. Vous pouvez ensuite transmettre unOutputConfiguration
àExtensionSessionConfiguration.setPostviewOutputConfiguration
.Compatibilité avec
SurfaceView
, ce qui permet d'obtenir un chemin de rendu d'aperçu plus optimisé et plus économe en énergie.Prise en charge de la mise au point et du zoom par appui pendant l'utilisation de l'extension.
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 des fonctionnalités avancées de capteur pour attribuer à un flux RAW recadré les mêmes pixels que le champ de vision complet à l'aide d'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 ne soient prêtes.
Audio USB sans perte
Android 14 gains support for lossless audio formats for audiophile-level
experiences over USB wired headsets. You can query a USB device for its
preferred mixer attributes, register a listener for changes in preferred mixer
attributes, and configure mixer attributes using the
AudioMixerAttributes
class. This class represents the
format, such as channel mask, sample rate, and behavior of the audio mixer. The
class allows for audio to be sent directly, without mixing,
volume adjustment, or processing effects.
Productivité et outils des développeurs
Gestionnaire d'identifiants
Android 14 ajoute le Gestionnaire d'identifiants en tant qu'API de plate-forme, avec une compatibilité supplémentaire avec les appareils Android 4.4 (niveau d'API 19) via une bibliothèque Jetpack utilisant les services Google Play. Le Gestionnaire d'identifiants vise à faciliter la connexion des utilisateurs avec des API qui récupèrent et stockent des identifiants avec des fournisseurs d'identifiants configurés par l'utilisateur. Le Gestionnaire d'identifiants prend en charge plusieurs méthodes de connexion, y compris la combinaison nom d'utilisateur/mot de passe, les clés d'accès et les solutions de connexion fédérée (par exemple, Se connecter avec Google) dans une seule API.
Les clés d'accès présentent de nombreux avantages. Par exemple, les clés d'accès sont basées sur les normes du secteur, peuvent fonctionner sur différents systèmes d'exploitation et écosystèmes de navigateurs, et peuvent être utilisées à la fois avec des sites Web et des applications.
Pour en savoir plus, consultez la documentation sur le Gestionnaire d'identifiants et les clés d'accès et l'article de blog sur le Gestionnaire d'identifiants et les clés d'accès.
Santé Connect
Santé Connect est un dépôt sur l'appareil pour 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 et même endroit pour contrôler les données qu'ils souhaitent partager avec ces applications.
Sur les appareils équipés de versions d'Android antérieures à Android 14, Santé Connect est disponible en téléchargement 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 nécessiter de téléchargement distinct. Santé Connect peut ainsi être mis à jour fréquemment, et vos applications peuvent compter sur Santé Connect 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, avec des commandes de confidentialité intégrées aux paramètres système.


Santé Connect inclut plusieurs nouvelles fonctionnalités dans Android 14, comme les parcours d'exercice, qui permettent aux utilisateurs de partager un parcours de leur entraînement qui peut être visualisé sur une carte. Un parcours est défini comme une liste d'emplacements enregistrés dans une période donnée. Votre application peut insérer des parcours dans des séances d'exercice, en les associant. Pour que les utilisateurs aient un contrôle total sur ces données sensibles, ils doivent autoriser le partage de trajets individuels avec d'autres applications.
Pour en savoir plus, consultez la documentation sur Santé Connect et l'article de blog sur les nouveautés d'Android Santé.
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.base
pour 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
instanceof
sans 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
To create a more standardized experience for detecting screenshots, Android 14 introduces a privacy-preserving screenshot detection API. This API lets apps register callbacks on a per-activity basis. These callbacks are invoked, and the user is notified, when the user takes a screenshot while that activity is 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 a introduit l'animation pour la prévisualisation du retour à l'accueil via une option pour les développeurs. Dans une application compatible, et si l'option pour les développeurs est activée, le fait de balayer l'écran vers l'arrière déclenche l'affichage d'une animation indiquant que le geste Retour permet de quitter l'application et de revenir à l'écran d'accueil.
Android 14 comporte plusieurs améliorations et de nouvelles consignes pour la prévisualisation du Retour :
- Vous pouvez définir
android:enableOnBackInvokedCallback=true
pour activer les animations système pour la prévisualisation du Retour par activité plutôt que pour l'ensemble de l'application. - Nous avons ajouté de nouvelles animations système pour accompagner l'animation de retour à l'écran d'accueil à partir d'Android 13. Les nouvelles animations système sont multi-activités et multitâches. Vous les obtenez automatiquement après avoir migré vers la prévisualisation du Retour.
- Nous avons ajouté de nouvelles animations de composant Material pour les bottom sheets, les espaces annexes et la recherche.
- Nous avons rédigé des conseils de conception pour créer des animations et des transitions personnalisées dans l'application.
- Nous avons ajouté de nouvelles API pour prendre en charge les animations de transition personnalisées dans l'application :
handleOnBackStarted
,handleOnBackProgressed
,handleOnBackCancelled
in
OnBackPressedCallback
onBackStarted
,onBackProgressed
,onBackCancelled
in
OnBackAnimationCallback
- Utilisez
overrideActivityTransition
au lieu deoverridePendingTransition
pour les transitions qui réagissent lorsque l'utilisateur balaie l'écran vers l'arrière.
Avec cette version preview d'Android 14, toutes les fonctionnalités de la prévisualisation du Retour sont accessibles via une option pour les développeurs. Consultez le guide du développeur pour migrer votre application vers la prévisualisation du Retour ainsi que le guide du développeur pour créer des transitions personnalisées dans l'application.
Forçages par application du fabricant d'appareils à grand écran
Per-app overrides enable device manufacturers to change the behavior of apps on large screen devices. For example, the FORCE_RESIZE_APP
override instructs the system to resize the app to fit display dimensions (avoiding size compatibility mode) even if resizeableActivity="false"
is set in the app manifest.
Overrides are intended to improve the user experience on large screens.
New manifest properties enable you to disable some device manufacturer overrides for your app.
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 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
App screen sharing enables users to share an app window instead of the entire device screen during screen content recording.
With app screen sharing, the status bar, navigation bar, notifications, and other system UI elements are excluded from the shared display. Only the content of the selected app is shared.
App screen sharing improves productivity and privacy by enabling users to run multiple apps but limit content sharing to a single app.
Réponse suggérée optimisée par LLM dans Gboard sur un Pixel 8 Pro
Sur les appareils Pixel 8 Pro avec le Feature Drop de décembre, les développeurs peuvent essayer des réponses intelligentes de meilleure qualité dans Gboard, qui sont optimisées par de grands modèles de langage (LLM) sur l'appareil exécutés sur Google Tensor.
Cette fonctionnalité est disponible en version Preview limitée pour l'anglais américain dans WhatsApp, Line et KakaoTalk. Pour cela, vous devez utiliser un appareil Pixel 8 Pro avec Gboard comme clavier.
Pour tester cette fonctionnalité, activez-la dans Paramètres > Options pour les développeurs > Paramètres AICore > Activer la persistance AICore.
Ouvrez ensuite une conversation dans une application compatible pour voir la réponse suggérée optimisée par LLM dans la bande de suggestions de Gboard en réponse aux messages entrants.
Graphiques
Les chemins sont interrogeables et interpolables
Android's Path
API is a powerful and flexible mechanism for
creating and rendering vector graphics, with the ability to stroke or fill a
path, construct a path from line segments or quadratic or cubic curves, perform
boolean operations to get even more complex shapes, or all of these
simultaneously. One limitation is the ability to find out what is actually in a
Path object; the internals of the object are opaque to callers after creation.
To create a Path
, you call methods such as
moveTo()
, lineTo()
, and
cubicTo()
to add path segments. But there has been no way to
ask that path what the segments are, so you must retain that information at
creation time.
Starting in Android 14, you can query paths to find out what's inside of them.
First, you need to get a PathIterator
object using the
Path.getPathIterator
API:
val path = Path().apply { moveTo(1.0f, 1.0f) lineTo(2.0f, 2.0f) close() } val pathIterator = path.pathIterator
Path path = new Path(); path.moveTo(1.0F, 1.0F); path.lineTo(2.0F, 2.0F); path.close(); PathIterator pathIterator = path.getPathIterator();
Next, you can call PathIterator
to iterate through the segments
one by one, retrieving all of the necessary data for each segment. This example
uses PathIterator.Segment
objects, which packages up the data
for you:
for (segment in pathIterator) { println("segment: ${segment.verb}, ${segment.points}") }
while (pathIterator.hasNext()) { PathIterator.Segment segment = pathIterator.next(); Log.i(LOG_TAG, "segment: " + segment.getVerb() + ", " + segment.getPoints()); }
PathIterator
also has a non-allocating version of next()
where you can pass
in a buffer to hold the point data.
One of the important use cases of querying Path
data is interpolation. For
example, you might want to animate (or morph) between two different paths. To
further simplify that use case, Android 14 also includes the
interpolate()
method on Path
. Assuming the two paths have
the same internal structure, the interpolate()
method creates a new Path
with that interpolated result. This example returns a path whose shape is
halfway (a linear interpolation of .5) between path
and otherPath
:
val interpolatedResult = Path() if (path.isInterpolatable(otherPath)) { path.interpolate(otherPath, .5f, interpolatedResult) }
Path interpolatedResult = new Path(); if (path.isInterpolatable(otherPath)) { path.interpolate(otherPath, 0.5F, interpolatedResult); }
The Jetpack graphics-path library enables similar APIs for earlier versions of Android as well.
Maillages personnalisés avec des nuanceurs de sommets et de fragments
Android permet depuis longtemps de dessiner des maillages triangulaires avec un ombrage personnalisé, mais le format de maillage d'entrée était limité à quelques combinaisons d'attributs prédéfinies. Android 14 est compatible avec les maillages personnalisés, qui peuvent être définis comme des triangles ou des bandes de triangles, et peuvent éventuellement être indexés. Ces maillages sont spécifiés avec des attributs personnalisés, des pas de vertex, des variations, et des nuanceurs de vertex et de fragment écrits en AGSL.
Le nuanceur de sommet définit les variations, telles que la position et la couleur, tandis que le nuanceur de fragment peut éventuellement définir la couleur du pixel, généralement à l'aide des variations créées par le nuanceur de sommet. Si une couleur est fournie par le nuanceur de fragment, elle est ensuite mélangée à la couleur Paint
actuelle à l'aide du mode de fusion sélectionné lors du dessin du maillage. Les uniformes peuvent être transmis aux nuanceurs de fragment et de sommet 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.