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 %
À 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 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 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 permet d'améliorer les images à l'aide d'algorithmes gourmands en ressources de calcul tels que la photographie par faible luminosité sur les appareils compatibles. Ces fonctionnalités offrent aux utilisateurs une expérience encore plus robuste lorsqu'ils utilisent des fonctionnalités d'extension d'appareil photo. Voici quelques exemples de ces améliorations:
- L'estimation dynamique de la latence de traitement de capture fournit des estimations beaucoup plus précises de la latence de capture basée sur la scène actuelle et les conditions de l'environnement. Appelez
CameraExtensionSession.getRealtimeStillCaptureLatency()
pour obtenir un objetStillCaptureLatency
comportant 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 la dernière trame traitée. - 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 longue durée, qui continuent de capturer. Vous pouvez vérifier si cette fonctionnalité est disponible avec
CameraExtensionCharacteristics.isCaptureProcessProgressAvailable
. Si c'est le cas, vous pouvez implémenter le rappelonCaptureProcessProgressed()
, dont la progression (de 0 à 100) est transmise en tant que paramètre. Métadonnées spécifiques à l'extension, telles que
CaptureRequest.EXTENSION_STRENGTH
, pour déterminer la quantité d'un effet d'extension, comme la quantité de flou d'arrière-plan avecEXTENSION_BOKEH
.Fonctionnalité de post-vue pour Still Capture dans les extensions Camera, qui fournit une image moins traitée plus rapidement que l'image finale. Si une extension présente une latence de traitement accrue, une image post-vue peut être fournie en tant qu'espace réservé pour améliorer l'expérience utilisateur et être remplacée ultérieurement pour l'image finale. Vous pouvez vérifier si cette fonctionnalité est disponible avec
CameraExtensionCharacteristics.isPostviewAvailable
. Vous pouvez ensuite transmettre unOutputConfiguration
àExtensionSessionConfiguration.setPostviewOutputConfiguration
.Prise en charge de
SurfaceView
, ce qui permet un chemin de rendu d'aperçu plus optimisé et économe en énergie.Prise en charge d'appuyer pour effectuer la mise au point et du zoom 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 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 ajoute le Gestionnaire d'identifiants en tant qu'API de plate-forme, avec une prise en charge supplémentaire des appareils Android 4.4 (niveau d'API 19) via une bibliothèque Jetpack à l'aide des services Google Play. Le Gestionnaire d'identifiants vise à faciliter la connexion des utilisateurs grâce à des API qui récupèrent et stockent des identifiants à l'aide de fournisseurs d'identifiants configurés par l'utilisateur. Le Gestionnaire d'identifiants prend en charge plusieurs méthodes de connexion, y compris le nom d'utilisateur et le mot de passe, les clés d'accès et des solutions de connexion fédérée (comme Se connecter avec Google) dans une seule API.
Les clés d'accès offrent de nombreux avantages. Par exemple, les clés d'accès sont basées sur les normes du secteur. Elles peuvent fonctionner avec différents systèmes d'exploitation et écosystèmes de navigateurs, ainsi qu'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, ainsi que 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 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 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 引入了多个 PackageInstaller
API,可帮助应用商店改善其用户体验。
下载之前请求批准安装
安装或更新应用可能需要用户批准。
例如,当使用 REQUEST_INSTALL_PACKAGES
权限的安装程序尝试安装新应用时。在之前的 Android 版本中,应用商店只有在 APK 写入安装会话且该会话已提交之后才能请求用户批准。
从 Android 14 开始,requestUserPreapproval()
方法可让安装程序在提交安装会话之前请求用户批准。此项改进可让应用商店将任何 APK 的下载操作推迟到用户批准安装之后。此外,用户批准安装后,应用商店可以在后台下载并安装应用,而不会干扰用户。
承担未来更新的责任
通过 setRequestUpdateOwnership()
方法,安装程序可以告知系统它打算负责未来安装的应用更新。此功能可实现更新所有权强制执行,即只有更新所有者才能为应用安装自动更新。更新所有权强制执行有助于确保用户仅从预期的应用商店接收更新。
任何其他安装程序(包括使用 INSTALL_PACKAGES
权限的安装程序)都必须获得用户的明确批准,才能安装更新。如果用户决定继续从其他来源进行更新,更新所有权将会丢失。
在干扰较少的时段更新应用
应用商店通常希望避免更新正在使用的应用,因为这会导致应用正在运行的进程被终止,而这可能会中断用户正在执行的操作。
从 Android 14 开始,InstallConstraints
API 让安装程序可以确保其应用更新在适当的时机进行。例如,应用商店可以调用 commitSessionAfterInstallConstraintsAreMet()
方法来确保仅在用户不再与相关应用互动时进行更新。
无缝安装可选拆分
借助拆分 APK,应用的功能可以通过单独的 APK 文件提供,而不是以单体式 APK 的形式提供。借助拆分 APK,应用商店可以优化不同应用组件的提供。例如,应用商店可能会根据目标设备的属性进行优化。自从在 API 级别 22 中引入以来,PackageInstaller
API 一直支持拆分。
在 Android 14 中,setDontKillApp()
方法可让安装程序指明在安装新的分块时不应终止应用正在运行的进程。应用商店可以使用此功能,在用户使用应用时无缝安装应用的新功能。
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 更新了系统 Sharesheet,以便为用户提供自定义应用操作和信息更丰富的预览结果。
添加自定义操作
借助 Android 14,您的应用可以 向其调用的系统 Sharesheet 添加自定义操作。
提高直接共享目标的排名
Android 14 根据来自应用的更多信号来确定直接 分享目标,以便为用户提供更实用的结果。 若要提供最有用的排名信号,请遵循 提高直接共享目标的排名。 通信应用还可以报告以下内容的快捷方式使用情况: 外发和传入的邮件
Prise en charge des animations intégrées et personnalisées pour la prévisualisation du Retour
Android 13 在开发者选项背后引入了预测性“返回主屏幕”动画。在已启用开发者选项的受支持应用中使用时,滑回手势会显示动画,表明返回手势会使应用退回到主屏幕。
Android 14 包含针对“预测性返回”的多项改进和新指南:
- 您可设置
android:enableOnBackInvokedCallback=true
,以便为每个 activity 选择启用预测性返回系统动画,而不是为整个应用选择启用。 - 我们添加了新的系统动画,以配合 Android 13 中的“返回主屏幕”动画。新的系统动画是跨 activity 和跨任务的,您可在迁移到预测性返回后自动获得该动画。
- 我们为底部动作条、侧边动作条和搜索添加了新的 Material 组件动画。
- 我们制作了有关如何创建自定义应用内动画和转换的设计指南。
- 我们添加了许多新 API 来支持自定义的应用内转换动画:
在此 Android 14 预览版中,所有预测性返回功能都是位于开发者选项背后。请参阅与将您的应用迁移到预测性返回有关的开发者指南,以及与创建自定义应用内转换有关的开发者指南。
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
Sur les appareils Pixel 8 Pro avec la mise à jour groupée de décembre, les développeurs peuvent tester des réponses suggérées de meilleure qualité dans Gboard, basées sur les grands modèles de langage (LLM, Large Language Model) installés sur l'appareil et exécutés sur Google Tensor.
Cette fonctionnalité est disponible sous la forme d'un aperçu limité en anglais américain dans WhatsApp, Line et KakaoTalk. Vous devez utiliser un Pixel 8 Pro avec Gboard comme clavier.
Pour l'essayer, commencez par activer la fonctionnalité dans Paramètres > Options pour les développeurs > Paramètres AI Core > Activer le persistant Aicore.
Ensuite, ouvrez une conversation dans une application compatible pour afficher la fonctionnalité Réponse suggérée basée sur le LLM dans la bande de suggestions de Gboard en réponse aux messages entrants.
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.