Android 14 offre aux développeurs de nouvelles fonctionnalités et API de qualité. Les informations suivantes vous présentent les nouvelles fonctionnalités disponibles pour vos applications et leurs nouvelles API.
Pour obtenir une liste détaillée des nouvelles API, des API 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 de l'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 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
localeConfigd'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 fichierLocaleConfiget 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 dossiersresde 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
localeConfigd'une application : utilisez les méthodessetOverrideLocaleConfig()etgetOverrideLocaleConfig()dansLocaleManagerpour 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 %
À partir d'Android 14, le système prend en charge la mise à l'échelle des polices jusqu'à 200 %, offrant ainsi aux utilisateurs des options d'accessibilité supplémentaires.
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 indépendants de l'échelle (sp) pour définir la taille du texte, ces options supplémentaires et améliorations de la mise à l'échelle sont appliquées automatiquement au texte de votre application. Toutefois, vous devez toujours effectuer des tests d'UI avec la taille de police maximale activée (200 %) pour vous assurer que votre application applique correctement les tailles de police et peut s'adapter à des tailles de police plus grandes sans affecter 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 dans les unités de pixels mis à l'échelle. Lorsque votre application utilise des unités sp, Android peut appliquer la taille de texte préférée de l'utilisateur et la mettre à l'échelle de manière appropriée.
N'utilisez pas les unités sp pour les marges intérieures ni pour définir la hauteur des vues en supposant une marge intérieure implicite : avec la mise à l'échelle non linéaire de la police, les dimensions sp 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 avec Configuration.fontScale ou DisplayMetrics.scaledDensity. La mise à l'échelle de la police n'étant plus 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
Définissez toujours android:lineHeight en utilisant des unités sp plutôt que dp, afin que la hauteur de ligne soit mise à l'échelle en même temps que votre texte. Sinon, si votre texte est en sp, mais que votre lineHeight est en dp ou px, il ne s'adapte pas et semble à l'étroit.
TextView corrige automatiquement le lineHeight afin de préserver les proportions souhaitées, mais uniquement si textSize et lineHeight sont définis en unités sp.
Appareil photo et médias
Ultra HDR pour les images
Android 14 prend en charge les images HDR (plage dynamique élevée) qui conservent davantage d'informations du capteur lors de la prise de vue, ce qui permet d'obtenir des couleurs plus vives et un contraste plus élevé. Android utilise le format Ultra HDR, qui est entièrement rétrocompatible avec les images JPEG. Il 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'UI en HDR est effectué automatiquement par le framework lorsque votre application active l'UI 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 prendre des images fixes Ultra HDR compressées sur les appareils compatibles. Avec plus de couleurs récupérées à partir du capteur, le post-traitement peut être 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, post-visualisation et plus encore dans les extensions de l'appareil photo
Android 14 升级并改进了相机扩展程序,让应用能够处理更长的处理时间,从而支持在受支持的设备上使用计算密集型算法(例如弱光摄影)来改善图片。这些功能可让用户在使用相机扩展功能时获得更出色的体验。这些改进的示例包括:
- 动态静态拍摄处理延迟时间估算功能可根据当前场景和环境条件提供更准确的静态拍摄延迟时间估算值。调用
CameraExtensionSession.getRealtimeStillCaptureLatency()可获取具有两种延迟时间估算方法的StillCaptureLatency对象。getCaptureLatency()方法会返回onCaptureStarted和onCaptureProcessStarted()之间的估算延迟时间,而getProcessingLatency()方法会返回onCaptureProcessStarted()和可用的最终处理帧之间的估算延迟时间。 - 支持拍摄进度回调,以便应用可以显示长时间运行的静态拍摄处理操作的当前进度。您可以检查
CameraExtensionCharacteristics.isCaptureProcessProgressAvailable是否支持此功能,如果支持,则实现onCaptureProcessProgressed()回调,并将进度(从 0 到 100)作为参数传入。 扩展程序专用元数据,例如用于调节扩展程序效果(例如背景虚化程度)的
CaptureRequest.EXTENSION_STRENGTH和EXTENSION_BOKEH。相机扩展程序中的静态图片拍摄预览功能,该功能比最终图片更快地提供经过较少处理的图片。如果扩展程序的处理延迟时间增加,可以提供 postview 图片作为占位符以提升用户体验,并在稍后改用最终图片。您可以使用
CameraExtensionCharacteristics.isPostviewAvailable检查此功能是否可用。然后,您可以将OutputConfiguration传递给ExtensionSessionConfiguration.setPostviewOutputConfiguration。支持
SurfaceView,可实现更优化且能效更高的预览渲染路径。支持在使用扩展程序时点按对焦和缩放。
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 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 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.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 引入了多个 PackageInstaller API,可帮助应用商店改善其用户体验。
下载之前请求批准安装
安装或更新应用可能需要用户批准。例如,当使用 REQUEST_INSTALL_PACKAGES 权限的安装程序尝试安装新应用时。在之前的 Android 版本中,只有在将 APK 写入安装会话并且提交会话后,应用商店才能请求用户批准。
从 Android 14 开始,requestUserPreapproval() 方法可让安装程序在提交安装会话之前请求用户批准。此项改进可让应用商店将任何 APK 的下载操作推迟到用户批准安装之后。此外,用户批准安装后,应用商店可以在后台下载并安装应用,而不会干扰用户。
承担未来更新的责任
借助 setRequestUpdateOwnership() 方法,安装程序可以向系统表明它打算负责将被安装的应用未来的更新。此 capability 可实现更新所有权强制执行,即仅允许更新所有者为应用安装自动更新。更新所有权强制执行有助于确保用户仅收到来自预期应用商店的更新。
任何其他安装程序(包括使用 INSTALL_PACKAGES 权限的安装程序)都必须获得用户的明确批准,才能安装更新。如果用户决定继续从其他来源安装更新,则会失去更新所有权。
在干扰较少的时段更新应用
应用商店通常希望避免更新正在使用的应用,因为这会导致应用正在运行的进程被终止,而这可能会中断用户正在执行的操作。
从 Android 14 开始,InstallConstraints API 让安装程序可以确保其应用更新在适当的时机进行。例如,应用商店可以调用 commitSessionAfterInstallConstraintsAreMet() 方法来确保仅在用户不再与相应应用互动时才进行更新。
无缝安装可选拆分
借助拆分 APK,应用的功能可以通过单独的 APK 文件提供,而不是以单体式 APK 的形式提供。借助拆分 APK,应用商店可以优化不同应用组件的提供。例如,应用商店可能会根据目标设备的属性进行优化。自在 API 级别 22 中引入以来,PackageInstaller API 一直支持拆分。
在 Android 14 中,setDontKillApp() 方法可让安装程序指明在安装新的拆分项时应用的运行进程不应终止。应用商店可以使用此功能,在用户使用应用时无缝安装应用的新功能。
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 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=truepour 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,handleOnBackCancelledinOnBackPressedCallbackonBackStarted,onBackProgressed,onBackCancelledinOnBackAnimationCallback- Utilisez
overrideActivityTransitionau lieu deoverridePendingTransitionpour 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
借助按应用替换项,设备制造商可以更改应用在大屏设备上的行为。例如,FORCE_RESIZE_APP 替换项会指示系统调整应用大小以适应显示屏尺寸(避免进入尺寸兼容模式),即使在应用清单中设置了 resizeableActivity="false" 也是如此。
替换项旨在改善大屏设备上的用户体验。
借助新的清单属性,您可以为应用停用某些设备制造商替换项。
Forçages par application de l'utilisateur d'appareils à grand écran
按应用替换项会更改应用在大屏设备上的行为。例如,无论应用的配置如何,OVERRIDE_MIN_ASPECT_RATIO_LARGE 设备制造商替换项都会将应用宽高比设置为 16:9。
借助 Android 14 QPR1,用户可以在大屏设备上通过新的设置菜单应用按应用替换项。
Partage du contenu d'une appli à l'écran
借助应用界面共享功能,用户可以在录制屏幕内容时共享应用窗口,而不是整个设备屏幕。
在应用屏幕共享模式下,状态栏、导航栏、通知和其他系统界面元素会从共享显示屏中排除。系统只会分享所选应用的内容。
应用屏幕共享功能可让用户运行多个应用,但将内容共享限制为单个应用,从而提高工作效率并保护隐私。
Réponses suggérées basées sur un LLM dans Gboard sur le 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
Chemins 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.
Maillages personnalisés avec des shaders 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é.
Renderer 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.