Android 14 bietet tolle Funktionen und APIs für Entwickler. In der Hilfe erfahren Sie mehr über Funktionen für Ihre Apps und beginnen mit den zugehörigen APIs.
Eine detaillierte Liste der hinzugefügten, geänderten und entfernten APIs finden Sie im API-Diff-Bericht. Weitere Informationen zu den hinzugefügten APIs finden Sie in der Android API-Referenz. Suchen Sie bei Android 14 nach APIs, die in API-Level 34 hinzugefügt wurden. Weitere Informationen zu Gebieten wo sich Plattformänderungen auf deine Apps auswirken könnten, schau dir Android 14 an Änderungen im Verhalten für Apps, die auf Android 14 ausgerichtet sind, und für alle Apps.
Lokalisierung
App-spezifische Spracheinstellungen
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.
Grammatical Inflection API
3 Milliarden Menschen sprechen geschlechterspezifische Sprachen: Sprachen, in denen grammatische Kategorien wie Substantive, Verben, Adjektive und Präpositionen je nach Geschlecht der Personen und Objekte, mit denen oder über die gesprochen wird, konjugiert werden. Traditionell wird in vielen Sprachen mit Geschlechtern das männliche grammatische Geschlecht als Standard- oder generisches Geschlecht verwendet.
Wenn Sie Nutzer im falschen grammatischen Geschlecht ansprechen, z. B. Frauen im maskulinen grammatischen Geschlecht, kann sich das negativ auf ihre Leistung und Einstellung auswirken. Eine Benutzeroberfläche mit einer Sprache, die das grammatische Geschlecht des Nutzers korrekt widerspiegelt, kann das Nutzer-Engagement verbessern und eine personalisiertere und natürlicher klingende Nutzererfahrung bieten.
To help you build a user-centric UI for gendered languages, Android 14 introduces the Grammatical Inflection API, which lets you add support for grammatical gender without refactoring your app.
Regionale Präferenzen
Mit den regionalen Einstellungen können Nutzer Temperatureinheiten, den Wochentag und das Nummerierungssystem anpassen. Ein Europäer, der in den USA lebt, möchte möglicherweise, dass Temperatureinheiten in Celsius statt in Fahrenheit angegeben werden und dass Apps Montag als Wochenbeginn verwenden, anstatt den US-Standardsonntag.
Die neuen Android-Einstellungen für diese Einstellungen bieten Nutzern eine leicht auffindbare und zentrale Stelle, an der sie die App-Einstellungen ändern können. Diese Einstellungen bleiben auch nach dem Sichern und Wiederherstellen erhalten. Mehrere APIs und
Intents, wie z. B.
getTemperatureUnit
und
getFirstDayOfWeek
–
Ihrer App Lesezugriff auf Nutzereinstellungen zu gewähren, damit sie anpassen kann, wie sie
werden Informationen angezeigt. Du kannst auch eine BroadcastReceiver
unter ACTION_LOCALE_CHANGED
registrieren, um Änderungen an der Gebietsschemakonfiguration zu verarbeiten, wenn sich die regionalen Einstellungen ändern.
Sie finden diese Einstellungen in den Einstellungen unter System > Sprachen und Eingabe > Regionale Einstellungen.


Bedienungshilfen
Nicht lineare Schriftskalierung auf 200%
Ab Android 14 unterstützt das System eine Schriftgrößenänderung von bis zu 200 %. So erhalten sehbehinderte Nutzer zusätzliche Optionen für Barrierefreiheit, die den Richtlinien für barrierefreie Webinhalte (Web Content Accessibility Guidelines, WCAG) entsprechen.
Damit große Textelemente auf dem Bildschirm nicht zu groß skaliert werden, verwendet das System eine nichtlineare Skalierungskurve. Durch diese Skalierungsstrategie werden große Textgrößen nicht in gleicher Geschwindigkeit skaliert wie kleinerer Text. Mit einer nicht linearen Schriftskalierung die proportionale Hierarchie zwischen Elementen unterschiedlicher Größe beibehalten, zur Minimierung von Problemen mit linearer Textskalierung in hohem Maße (z. B. abgeschnittener Text oder Text, der aufgrund des extrem großen Displays schwerer lesbar ist Größen).
App mit nicht linearer Schriftskalierung testen

Wenn Sie bereits skalierbare Pixel (sp) zum Definieren der Textgröße verwenden, werden diese zusätzlichen Optionen und Skalierungsverbesserungen automatisch auf den Text in Ihrer App angewendet. Sie sollten jedoch weiterhin UI-Tests mit aktivierter maximaler Schriftgröße (200 %) durchführen, um sicherzustellen, dass die Schriftgrößen in Ihrer App korrekt angewendet werden und größere Schriftgrößen ohne Beeinträchtigung der Nutzerfreundlichkeit möglich sind.
So aktivieren Sie die Schriftgröße von 200 %:
- Öffnen Sie die Einstellungen und navigieren Sie zu Bedienungshilfen > Anzeigegröße und Text.
- Tippen Sie für die Option Schriftgröße auf das Pluszeichen (+), bis die maximale Schriftart Größeneinstellung aktiviert ist, wie in der zugehörigen Abbildung gezeigt. .
Skalierte Pixeleinheiten (sp) für Textgrößen verwenden
Geben Sie Textgrößen immer in sp-Einheiten an. Wann? Ihre App sp-Einheiten verwendet, kann Android die bevorzugte Textgröße des Nutzers und und skalieren Sie es entsprechend.
Verwenden Sie keine sp-Einheiten für das Padding und definieren Sie keine Ansichtshöhen bei implizitem Padding: mit nicht linearer Schriftskalierung sind die Abmessungen sp möglicherweise nicht proportional. Daher ist 4sp + 20 sp ist möglicherweise nicht gleich 24 sp.
Skalierte Pixeleinheiten (sp) umrechnen
Verwenden Sie TypedValue.applyDimension()
, um von sp-Einheiten in Pixel umzuwandeln, und TypedValue.deriveDimension()
, um Pixel in sp umzuwandeln. Bei diesen Methoden wird die entsprechende nichtlineare Skalierungskurve automatisch angewendet.
Vermeiden Sie das Hartkodieren von Gleichungen mit
Configuration.fontScale
oder
DisplayMetrics.scaledDensity
Da die Schrift skaliert wird, ist das Feld scaledDensity
nicht mehr korrekt. Das Feld fontScale
sollte nur zu Informationszwecken verwendet werden, da Schriftarten nicht mehr mit einem einzelnen Skalarwert skaliert werden.
Verwenden Sie sp-Einheiten für „lineHeight“.
Definieren Sie android:lineHeight
immer in sp-Einheiten anstelle von dp, damit die Zeilenhöhe mit dem Text skaliert. Andernfalls, wenn Ihr Text in sp, Ihre lineHeight
aber in dp oder px ist, wird er nicht skaliert und wirkt überladen.
TextView korrigiert lineHeight
automatisch so, dass die beabsichtigte
Proportionen werden beibehalten, aber nur, wenn sowohl textSize
als auch lineHeight
in sp-Einheiten definiert.
Kamera und Medien
Ultra HDR für Bilder

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, Fokus, PostView und mehr in Kameraerweiterungen
In Android 14 wurden die Kameraerweiterungen aktualisiert und verbessert. So können Apps längere Verarbeitungszeiten verarbeiten, was mithilfe von leistungsintensiven Algorithmen wie der Fotografie bei wenig Licht auf unterstützten Geräten zu besseren Bildern führt. Diese Funktionen bieten Nutzern noch mehr Stabilität bei der Verwendung von Kameraerweiterungsfunktionen. Beispiele für diese Verbesserungen:
- Die dynamische Schätzung der Verarbeitungslatenz für Standbilder liefert viel genauere Schätzungen der Latenz für Standbilder basierend auf der aktuellen Szene und den Umgebungsbedingungen. Rufen Sie
CameraExtensionSession.getRealtimeStillCaptureLatency()
auf, um einStillCaptureLatency
-Objekt mit zwei Methoden zur Latenzschätzung abzurufen. Die MethodegetCaptureLatency()
gibt die geschätzte Latenz zwischenonCaptureStarted
undonCaptureProcessStarted()
zurück. Die MethodegetProcessingLatency()
gibt die geschätzte Latenz zwischenonCaptureProcessStarted()
und der Verfügbarkeit des letzten verarbeiteten Frames zurück. - Unterstützung für Callbacks zum Aufnahmefortschritt, damit Apps den aktuellen Fortschritt langwieriger Verarbeitungsvorgänge für Standbilder anzeigen können. Du kannst mit
CameraExtensionCharacteristics.isCaptureProcessProgressAvailable
prüfen, ob diese Funktion verfügbar ist. Ist das der Fall, implementiere den CallbackonCaptureProcessProgressed()
, der den Fortschritt (von 0 bis 100) als Parameter enthält. Erweiterungsspezifische Metadaten wie
CaptureRequest.EXTENSION_STRENGTH
, um die Intensität eines Erweiterungseffekts zu steuern, z. B. die Weichzeichnung des Hintergrunds mitEXTENSION_BOKEH
.Postview-Funktion für die Standbildaufnahme in Kameraerweiterungen, mit der ein weniger verarbeitetes Bild schneller als das Endbild angezeigt wird. Wenn eine Erweiterung die Verarbeitungslatenz erhöht, kann ein Postview-Bild als Platzhalter bereitgestellt werden, um die Nutzerfreundlichkeit zu verbessern, und später durch das endgültige Bild ersetzt werden. Mit
CameraExtensionCharacteristics.isPostviewAvailable
können Sie prüfen, ob diese Funktion verfügbar ist. Anschließend können SieOutputConfiguration
anExtensionSessionConfiguration.setPostviewOutputConfiguration
übergeben.Unterstützung für
SurfaceView
, was einen optimierteren und energieeffizienteren Renderpfad für die Vorschau ermöglicht.Unterstützung für das Fokussieren und Zoomen durch Tippen bei Verwendung der Erweiterung.
Sensor-Zoom
Wenn REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE
in CameraCharacteristics
SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
enthält, kann Ihre App mithilfe erweiterter Sensorfunktionen einem zugeschnittenen RAW-Stream dieselben Pixel wie das vollständige Sichtfeld zuweisen. Verwenden Sie dazu einen CaptureRequest
mit einem RAW-Ziel, für das der Stream-Nutzungsfall auf CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
festgelegt ist.
Durch die Implementierung der Steuerelemente für die Überschreibung von Anfragen können Nutzer mit der aktualisierten Kamera den Zoom bereits steuern, bevor andere Kamerasteuerelemente verfügbar sind.
Verlustfreies USB-Audio
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.
Produktivität und Tools für Entwickler
Anmeldedaten-Manager
Android 14 adds Credential Manager as a platform API, with additional support back to Android 4.4 (API level 19) devices through a Jetpack Library using Google Play services. Credential Manager aims to make sign-in easier for users with APIs that retrieve and store credentials with user-configured credential providers. Credential Manager supports multiple sign-in methods, including username and password, passkeys, and federated sign-in solutions (such as Sign-in with Google) in a single API.
Passkeys provide many advantages. For example, passkeys are built on industry standards, can work across different operating systems and browser ecosystems, and can be used with both websites and apps.
For more information, see the Credential Manager and passkeys documentation and the blogpost about Credential Manager and passkeys.
Health 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.
Updates zu OpenJDK 17
Mit Android 14 werden die Kernbibliotheken von Android weiter aktualisiert, um sie an die Funktionen der neuesten OpenJDK LTS-Releases anzupassen. Dazu gehören sowohl Bibliotheksupdates als auch die Java 17-Sprachunterstützung für App- und Plattformentwickler.
Die folgenden Funktionen und Verbesserungen sind enthalten:
- Etwa 300
java.base
-Klassen wurden auf Java 17 umgestellt. - Textblöcke, die mehrzeilige Stringliterale in die Java-Programmiersprache einführen.
- Musterabgleich für „instanceof“: Damit kann ein Objekt in einer
instanceof
ohne zusätzliche Variablen als Objekt eines bestimmten Typs behandelt werden. - Verschlossene Klassen, mit denen Sie einschränken können, welche Klassen und Schnittstellen sie erweitern oder implementieren können.
Dank Google Play-Systemupdates (Project Mainline) können über 600 Millionen Geräte die neuesten Android Runtime-Updates (ART) erhalten, die diese Änderungen enthalten. Wir möchten Apps eine einheitliche, sichere Umgebung auf allen Geräten bieten und Nutzern unabhängig von Plattformveröffentlichungen neue Funktionen und Möglichkeiten zur Verfügung stellen.
Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Verbesserungen für App-Shops
Android 14 introduces several PackageInstaller
APIs that
allow app stores to improve their user experience.
Request install approval before downloading
Installing or updating an app might require user approval.
For example, when an installer making use of the
REQUEST_INSTALL_PACKAGES
permission attempts to install a
new app. In prior Android versions, app stores can only request user approval
after APKs are written to the install session and the
session is committed.
Starting with Android 14, the requestUserPreapproval()
method lets installers request user approval before committing the install
session. This improvement lets an app store defer downloading any APKs until
after the installation has been approved by the user. Furthermore, once a user
has approved installation, the app store can download and install the app in the
background without interrupting the user.
Claim responsibility for future updates
The setRequestUpdateOwnership()
method allows an installer
to indicate to the system that it intends to be responsible for future updates
to an app it is installing. This capability enables update ownership
enforcement, meaning that only the update owner is permitted
to install automatic updates to the app. Update ownership enforcement helps to
ensure that users receive updates only from the expected app store.
Any other installer, including those making use of the
INSTALL_PACKAGES
permission, must receive explicit user
approval in order to install an update. If a user decides to proceed with an
update from another source, update ownership is lost.
Update apps at less-disruptive times
App stores typically want to avoid updating an app that is actively in use because this leads to the app's running processes being killed, which potentially interrupts what the user was doing.
Starting with Android 14, the InstallConstraints
API
gives installers a way to ensure that their app updates happen at an opportune
moment. For example, an app store can call the
commitSessionAfterInstallConstraintsAreMet()
method to
make sure that an update is only committed when the user is no longer
interacting with the app in question.
Seamlessly install optional splits
With split APKs, features of an app can be delivered in separate APK files,
rather than as a monolithic APK. Split APKs allow app stores to optimize the
delivery of different app components. For example, app stores might optimize
based on the properties of the target device. The
PackageInstaller
API has supported splits since its
introduction in API level 22.
In Android 14, the setDontKillApp()
method allows an
installer to indicate that the app's running processes shouldn't be killed when
new splits are installed. App stores can use this feature to seamlessly install
new features of an app while the user is using the app.
App-Metadaten-Bundles
Ab Android 14 können Sie mit dem Android-Paketinstallationsprogramm App-Metadaten wie Praktiken zur Datensicherheit angeben, die auf App-Shop-Seiten wie Google Play angezeigt werden.
Erkennen, wenn Nutzer Screenshots von Geräten machen
Um die Erkennung von Screenshots zu standardisieren, Android 14 führt eine datenschutzfreundliche Screenshot-Erkennung ein API hinzu. Mit dieser API können Apps Rückrufe pro Aktivität registrieren. Diese Callbacks ausgelöst und der Nutzer wird benachrichtigt, während diese Aktivität sichtbar ist.
Nutzererfahrung
Benutzerdefinierte Aktionen für die Freigabeseite und verbessertes Ranking
Android 14 updates the system sharesheet to support custom app actions and more informative preview results for users.
Add custom actions
With Android 14, your app can add custom actions to the system sharesheet it invokes.

Improve ranking of Direct Share targets
Android 14 uses more signals from apps to determine the ranking of the direct share targets to provide more helpful results for the user. To provide the most useful signal for ranking, follow the guidance for improving rankings of your Direct Share targets. Communication apps can also report shortcut usage for outgoing and incoming messages.

Unterstützung für integrierte und benutzerdefinierte Animationen für die intelligente „Zurück“-Touch-Geste
Android 13 introduced the predictive back-to-home animation behind a developer option. When used in a supported app with the developer option enabled, swiping back shows an animation indicating that the back gesture exits the app back to the home screen.
Android 14 includes multiple improvements and new guidance for Predictive Back:
- You can set
android:enableOnBackInvokedCallback=true
to opt in to predictive back system animations per-Activity instead of for the entire app. - We've added new system animations to accompany the back-to-home animation from Android 13. The new system animations are cross-activity and cross-task, which you get automatically after migrating to Predictive Back.
- We've added new Material Component animations for Bottom sheets, Side sheets, and Search.
- We've created design guidance for creating custom in-app animations and transitions.
- We've added new APIs to support custom in-app transition animations:
handleOnBackStarted
,handleOnBackProgressed
,handleOnBackCancelled
in
OnBackPressedCallback
onBackStarted
,onBackProgressed
,onBackCancelled
in
OnBackAnimationCallback
- Use
overrideActivityTransition
instead ofoverridePendingTransition
for transitions that respond as the user swipes back.
With this Android 14 preview release, all features of Predictive Back remain behind a developer option. See the developer guide to migrate your app to predictive back, as well as the developer guide to creating custom in-app transitions.
App-spezifische Überschreibungen von Geräteherstellern mit großem Display
Mit Überschreibungen pro App können Gerätehersteller das Verhalten von Apps auf Geräten mit großen Bildschirmen ändern. Die Überschreibung FORCE_RESIZE_APP
weist das System beispielsweise an, die App an die Displayabmessungen anzupassen (um den Kompatibilitätsmodus zu vermeiden), auch wenn resizeableActivity="false"
im App-Manifest festgelegt ist.
Überschreibungen sollen die Nutzererfahrung auf großen Bildschirmen verbessern.
Mit neuen Manifesteigenschaften können Sie einige Überschreibungen von Geräteherstellern für Ihre App deaktivieren.
Nutzer mit großem Bildschirm – App-spezifische Überschreibungen
Mit App-spezifischen Überschreibungen können Sie das Verhalten von Apps auf Geräten mit großen Bildschirmen ändern. Beispielsweise wird durch die Override-Anweisung des Geräteherstellers OVERRIDE_MIN_ASPECT_RATIO_LARGE
das Seitenverhältnis der App unabhängig von der Konfiguration der App auf 16:9 festgelegt.
Mit Android 14 QPR1 können Nutzer auf Geräten mit großem Bildschirm über ein neues Einstellungsmenü App-spezifische Überschreibungen anwenden.
App-Bildschirmfreigabe
Bei der App-Bildschirmfreigabe können Nutzer beim Aufzeichnen von Bildschirminhalten ein App-Fenster anstelle des gesamten Gerätebildschirms freigeben.
Bei der Bildschirmfreigabe für Apps werden die Statusleiste, die Navigationsleiste, Benachrichtigungen und andere Elemente der System-UI vom geteilten Display ausgeschlossen. Es werden nur die Inhalte der ausgewählten App freigegeben.
Die Bildschirmfreigabe von Apps verbessert die Produktivität und den Datenschutz, da Nutzer mehrere Apps ausführen, die Freigabe von Inhalten jedoch auf eine einzelne App beschränken können.
LLM-basierte intelligente Antwort in Gboard auf dem 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.
Grafik
Pfade können abgefragt und interpoliert werden
Die Path
API von Android ist ein leistungsstarker und flexibler Mechanismus zum Erstellen und Rendern von Vektorgrafiken. Sie können damit einen Pfad zeichnen oder füllen, einen Pfad aus Liniensegmenten oder quadratischen oder kubischen Kurven erstellen, boolesche Operationen ausführen, um noch komplexere Formen zu erhalten, oder all dies gleichzeitig. Eine Einschränkung besteht darin, herauszufinden, was sich tatsächlich in einem Pfadobjekt befindet. Das Innere des Objekts ist nach der Erstellung für Aufrufer undurchsichtig.
Wenn Sie eine Path
erstellen möchten, rufen Sie Methoden wie moveTo()
, lineTo()
und cubicTo()
auf, um Pfadsegmente hinzuzufügen. Da es jedoch nicht möglich war, den Pfad nach den Segmenten zu fragen, müssen Sie diese Informationen zum Zeitpunkt der Erstellung beibehalten.
Ab Android 14 können Sie Pfade abfragen, um herauszufinden, was sie enthalten.
Rufen Sie zuerst ein PathIterator
-Objekt mit der Path.getPathIterator
API ab:
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();
Als Nächstes können Sie PathIterator
aufrufen, um die Segmente nacheinander durchzugehen und alle erforderlichen Daten für jedes Segment abzurufen. In diesem Beispiel werden PathIterator.Segment
-Objekte verwendet, die die Daten für Sie verpacken:
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
hat auch eine Version von next()
ohne Zuordnung, in der Sie einen Zwischenspeicher übergeben können, um die Punktdaten zu speichern.
Einer der wichtigsten Anwendungsfälle für die Abfrage von Path
-Daten ist die Interpolation. So können Sie beispielsweise einen Übergang (Morphing) zwischen zwei verschiedenen Pfaden animieren. Zur weiteren Vereinfachung dieses Anwendungsfalls enthält Android 14 auch die Methode interpolate()
für Path
. Unter der Annahme, dass die beiden Pfade die gleiche interne Struktur haben, erstellt die Methode interpolate()
eine neue Path
mit diesem interpolierten Ergebnis. In diesem Beispiel wird ein Pfad zurückgegeben, dessen Form halbiert ist (eine lineare Interpolation von 0,5) zwischen path
und 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); }
Die Jetpack-Bibliothek graphics-path ermöglicht ähnliche APIs auch für ältere Android-Versionen.
Benutzerdefinierte Shader mit Vertex- und Fragment-Shadern
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.
Hardware-Zwischenspeicher-Renderer für Canvas
To assist in using Android's Canvas
API to draw with
hardware acceleration into a HardwareBuffer
, Android 14
introduces HardwareBufferRenderer
. This API is
particularly useful when your use case involves communication with the system
compositor through SurfaceControl
for low-latency
drawing.