Android 14 bietet Entwicklern viele neue Funktionen und APIs. Die folgenden Ressourcen helfen Ihnen, sich über Funktionen für Ihre Apps zu informieren und mit den zugehörigen APIs zu beginnen.
Eine detaillierte Liste der hinzugefügten, geänderten und entfernten APIs finden Sie im API-Vergleichsbericht. Details zu den hinzugefügten APIs finden Sie in der Android-API-Referenz. Suchen Sie dort nach APIs, die in API-Level 34 hinzugefügt wurden. Informationen zu Bereichen, in denen sich Plattformänderungen auf Ihre Apps auswirken können, finden Sie unter „Verhaltensänderungen in Android 14“ für Apps, die auf Android 14 ausgerichtet sind, und für alle Apps.
Lokalisierung
App-spezifische Spracheinstellungen
Android 14 erweitert die Funktionen für die Sprache pro App, die in Android 13 (API-Level 33) eingeführt wurden, um die folgenden zusätzlichen Funktionen:
localeConfigeiner App automatisch generieren: Ab Android Studio Giraffe Canary 7 und AGP 8.1.0-alpha07 können Sie Ihre App so konfigurieren, dass sie automatisch Spracheinstellungen pro App unterstützt. Basierend auf den Projektressourcen generiert das Android Gradle-Plug-in die DateiLocaleConfigund fügt in der endgültigen Manifestdatei einen Verweis darauf hinzu. Sie müssen die Datei also nicht mehr manuell erstellen oder aktualisieren. AGP verwendet die Ressourcen in denres-Ordnern Ihrer App-Module und alle Abhängigkeiten von Bibliotheksmodulen, um die Sprachen zu ermitteln, die in dieLocaleConfig-Datei aufgenommen werden sollen.Dynamische Updates für die
localeConfigeiner App: Verwenden Sie die MethodensetOverrideLocaleConfig()undgetOverrideLocaleConfig()inLocaleManager, um die Liste der unterstützten Sprachen Ihrer App in den Systemeinstellungen des Geräts dynamisch zu aktualisieren. Sie können diese Flexibilität nutzen, um die Liste der unterstützten Sprachen pro Region anzupassen, A/B-Tests durchzuführen oder eine aktualisierte Liste der Sprachen anzugeben, wenn Ihre App serverseitige Pushes für die Lokalisierung verwendet.Sichtbarkeit der App-Sprache für Eingabemethoden-Editoren (IMEs): IMEs können die Methode
getApplicationLocales()verwenden, um die Sprache der aktuellen App zu prüfen und die IME-Sprache mit dieser Sprache abzugleichen.
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.
Mit der Grammatical Inflection API in Android 14 können Sie eine nutzerzentrierte Benutzeroberfläche für Sprachen mit grammatischem Geschlecht erstellen. So können Sie die Unterstützung für das grammatische Geschlecht hinzufügen, ohne Ihre App umbauen zu müssen.
Regionale Einstellungen
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 Skalierung der Schriftgröße auf 200%
Ab Android 14 unterstützt das System die Schriftartskalierung auf bis zu 200 % und bietet Nutzern so zusätzliche Optionen für die Barrierefreiheit.
Damit große Textelemente auf dem Bildschirm nicht zu groß skaliert werden, wendet das System eine nichtlineare Skalierungskurve an. Bei dieser Skalierungsstrategie wird großer Text nicht im gleichen Maße skaliert wie kleiner Text. Die nicht lineare Skalierung von Schriftarten trägt dazu bei, die proportionale Hierarchie zwischen Elementen unterschiedlicher Größe beizubehalten und gleichzeitig Probleme mit der linearen Textskalierung bei hohen Graden zu vermeiden, z. B. wenn Text abgeschnitten wird oder aufgrund einer extrem großen Displaygröße schwerer zu lesen ist.
App mit nicht linearer Schriftgrößenskalierung testen
Wenn Sie bereits skalierbare Pixel (sp) zum Definieren der Textgröße verwenden, werden diese zusätzlichen Optionen und Verbesserungen der Skalierung automatisch auf den Text in Ihrer App angewendet. Sie sollten jedoch trotzdem UI-Tests mit aktivierter maximaler Schriftgröße (200%) durchführen, um sicherzustellen, dass Ihre App die Schriftgrößen korrekt anwendet und größere Schriftgrößen ohne Beeinträchtigung der Nutzerfreundlichkeit unterstützt.
So aktivieren Sie die Schriftgröße von 200 %:
- Öffnen Sie die Einstellungen und gehen Sie zu Bedienungshilfen > Anzeigegröße und Text.
- Tippen Sie für die Option Schriftgröße auf das Pluszeichen (+), bis die maximale Schriftgröße eingestellt ist, wie im Bild zu diesem Abschnitt zu sehen.
Skalierbare Pixel (sp) für Textgrößen verwenden
Denken Sie daran, Textgrößen immer in sp-Einheiten anzugeben. Wenn Ihre App „sp“-Einheiten verwendet, kann Android die bevorzugte Textgröße des Nutzers anwenden und entsprechend skalieren.
Verwenden Sie keine „sp“-Einheiten für den Innenabstand und definieren Sie keine Ansichtshöhen, die einen impliziten Innenabstand voraussetzen: Bei nicht linearer Schriftartskalierung sind „sp“-Dimensionen möglicherweise nicht proportional. Daher ist 4sp + 20sp möglicherweise nicht gleich 24sp.
Einheiten für skalierte Pixel (sp) umrechnen
Verwenden Sie TypedValue.applyDimension(), um von sp-Einheiten in Pixel umzurechnen, und TypedValue.deriveDimension(), um Pixel in sp umzurechnen. Bei diesen Methoden wird automatisch die entsprechende nichtlineare Skalierungskurve angewendet.
Vermeiden Sie das Hardcodieren von Gleichungen mit Configuration.fontScale oder DisplayMetrics.scaledDensity. Da die Schriftartskalierung nicht linear ist, ist das Feld scaledDensity nicht mehr genau. Das Feld fontScale sollte nur zu Informationszwecken verwendet werden, da Schriftarten nicht mehr mit einem einzelnen Skalarwert skaliert werden.
„sp“-Einheiten für „lineHeight“ verwenden
Definieren Sie android:lineHeight immer in sp-Einheiten anstelle von dp, damit die Zeilenhöhe mit dem Text skaliert wird. Wenn Ihr Text in sp, Ihre lineHeight aber in dp oder px angegeben ist, wird er nicht skaliert und sieht gequetscht aus.
TextView korrigiert die lineHeight automatisch, sodass die beabsichtigten Proportionen beibehalten werden. Das funktioniert jedoch nur, wenn sowohl textSize als auch lineHeight in sp-Einheiten definiert sind.
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
Android 14 upgrades and improves camera extensions, allowing apps to handle longer processing times, which enables improved images using compute-intensive algorithms like low-light photography on supported devices. These features give users an even more robust experience when using camera extension capabilities. Examples of these improvements include:
- Dynamic still capture processing latency estimation provides much more
accurate still capture latency estimates based on the current scene and
environment conditions. Call
CameraExtensionSession.getRealtimeStillCaptureLatency()to get aStillCaptureLatencyobject that has two latency estimation methods. ThegetCaptureLatency()method returns the estimated latency betweenonCaptureStartedandonCaptureProcessStarted(), and thegetProcessingLatency()method returns the estimated latency betweenonCaptureProcessStarted()and the final processed frame being available. - Support for capture progress callbacks so that apps can display the current
progress of long-running, still-capture processing operations. You can check
if this feature is available with
CameraExtensionCharacteristics.isCaptureProcessProgressAvailable, and if it is, you implement theonCaptureProcessProgressed()callback, which has the progress (from 0 to 100) passed in as a parameter. Extension specific metadata, such as
CaptureRequest.EXTENSION_STRENGTHfor dialing in the amount of an extension effect, such as the amount of background blur withEXTENSION_BOKEH.Postview Feature for Still Capture in camera extensions, which provides a less-processed image more quickly than the final image. If an extension has increased processing latency, a postview image could be provided as a placeholder to improve UX and switched out later for the final image. You can check if this feature is available with
CameraExtensionCharacteristics.isPostviewAvailable. Then you can pass anOutputConfigurationtoExtensionSessionConfiguration.setPostviewOutputConfiguration.Support for
SurfaceViewallowing for a more optimized and power-efficient preview render path.Support for tap to focus and zoom during extension usage.
In-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.
Lossless-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 von Entwicklern und Tools
Credential 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.
OpenJDK 17-Updates
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
instanceofohne 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
Starting in Android 14, the Android package installer lets you specify app metadata, such as data safety practices, to include on app store pages such as Google Play.
Erkennen, wenn Nutzer Screenshots aufnehmen
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.
Nutzererfahrung
Benutzerdefinierte Aktionen im Freigabeblatt und verbessertes Ranking
Unter Android 14 wird das System-Freigabe-Dialogfeld aktualisiert, um benutzerdefinierte App-Aktionen und informativere Vorschauergebnisse für Nutzer zu unterstützen.
Benutzerdefinierte Aktionen hinzufügen
Unter Android 14 kann Ihre App dem freigegebenen System-Sheet benutzerdefinierte Aktionen hinzufügen.
Rang der Ziele für die direkte Freigabe verbessern
Unter Android 14 werden mehr Signale aus Apps verwendet, um das Ranking der Ziele für die direkte Freigabe zu bestimmen und so hilfreichere Ergebnisse für den Nutzer zu liefern. Folgen Sie der Anleitung unter Rankings Ihrer Ziele für die direkte Freigabe verbessern, um das nützlichste Signal für das Ranking bereitzustellen. Kommunikations-Apps können auch die Nutzung von Tastenkürzeln für ausgehende und eingehende Nachrichten melden.
Unterstützung für integrierte und benutzerdefinierte Animationen für die intelligente „Zurück“-Touchgeste
In Android 13 wurde die intelligente „Zurück“-Geste für die Systemanimation als Entwickleroption eingeführt. Wenn Sie die Touch-Geste „Zurück“ in einer unterstützten App verwenden, bei der die Entwickleroption aktiviert ist, wird beim Wischen nach hinten eine Animation angezeigt, die darauf hinweist, dass Sie durch die Touch-Geste „Zurück“ die App verlassen und zum Startbildschirm zurückkehren.
Android 14 enthält mehrere Verbesserungen und neue Hinweise für die Vorhersagefunktion für Back:
- Sie können
android:enableOnBackInvokedCallback=trueso einstellen, dass die vorausschauenden Systemanimationen für die Rückwärtsnavigation pro Aktivität und nicht für die gesamte App aktiviert werden. - Wir haben neue Systemanimationen hinzugefügt, die die Animation zum Zurückkehren zum Startbildschirm aus Android 13 begleiten. Die neuen Systemanimationen sind aktivitäts- und aufgabenübergreifend und werden Ihnen automatisch angezeigt, nachdem Sie zur intelligenten „Zurück“-Touch-Geste migriert sind.
- Wir haben neue Material Component-Animationen für Untere Seitenleisten, Seitenleisten und die Suche hinzugefügt.
- Wir haben Designrichtlinien für die Erstellung benutzerdefinierter In-App-Animationen und ‑Übergänge erstellt.
- Wir haben neue APIs hinzugefügt, um benutzerdefinierte In-App-Übergangsanimationen zu unterstützen:
handleOnBackStarted,handleOnBackProgressed,handleOnBackCancelledinOnBackPressedCallbackonBackStarted,onBackProgressed,onBackCancelledinOnBackAnimationCallback- Verwenden Sie
overrideActivityTransitionanstelle vonoverridePendingTransitionfür Übergänge, die ausgelöst werden, wenn der Nutzer wischt.
In dieser Android 14-Vorabversion sind alle Funktionen der Vorhersagefunktion für die rückwärtsgerichtete Navigation weiterhin nur über eine Entwickleroption verfügbar. Weitere Informationen finden Sie im Entwicklerleitfaden zur Migration Ihrer App zu der Funktion „Vorhersagender Rückwärtsgang“ und im Entwicklerleitfaden zum Erstellen benutzerdefinierter In-App-Übergänge.
Herstellerspezifische Überschreibungen für Apps auf Geräten mit großem Display
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.
App-spezifische Überschreibungen für Nutzer mit großen Bildschirmen
Per-app overrides change the behavior of apps on large screen devices. For example, the OVERRIDE_MIN_ASPECT_RATIO_LARGE device manufacturer override sets the app aspect ratio to 16:9 regardless of the app's configuration.
Android 14 QPR1 enables users to apply per‑app overrides by means of a new settings menu on large screen devices.
App-Bildschirmfreigabe
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.
LLM-basierte Funktion „Intelligente Antworten“ in Gboard auf dem Pixel 8 Pro
Auf Google Pixel 8 Pro-Geräten mit dem Feature Drop vom Dezember können Entwickler intelligente Antworten in Gboard ausprobieren, die auf On-Device-Large Language Models (LLMs) basieren, die auf Google Tensor ausgeführt werden.
Diese Funktion ist in WhatsApp, Line und KakaoTalk als eingeschränkte Vorabversion für amerikanisches Englisch verfügbar. Dazu benötigen Sie ein Google Pixel 8 Pro mit Gboard als Tastatur.
Wenn Sie die Funktion ausprobieren möchten, aktivieren Sie sie zuerst unter Einstellungen > Entwickleroptionen > AICore-Einstellungen > „Persistente AICore-Daten aktivieren“.
Öffnen Sie als Nächstes eine Unterhaltung in einer unterstützten App, um LLM-basierte intelligente Antworten in der Vorschlagsleiste von Gboard als Antwort auf eingehende Nachrichten zu sehen.
Grafik
Pfade können abgefragt und interpoliert werden
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:
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();
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:
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 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:
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); }
The Jetpack graphics-path library enables similar APIs for earlier versions of Android as well.
Benutzerdefinierte Meshes mit Vertex- und Fragment-Shadern
Android unterstützt schon lange das Zeichnen von Dreiecksnetzen mit benutzerdefinierter Schattierung. Das Eingabe-Mesh-Format war jedoch auf einige vordefinierte Kombinationen von Attributen beschränkt. Android 14 unterstützt benutzerdefinierte 3D-Meshes, die als Dreiecke oder Dreiecksstreifen definiert werden können und optional indexiert werden können. Diese Meshes werden mit benutzerdefinierten Attributen, Vertex-Strides, Variierenden sowie Vertex- und Fragment-Shadern in AGSL angegeben.
Der Vertex-Shader definiert die Variablen wie Position und Farbe, während der Fragment-Shader optional die Farbe für das Pixel definieren kann, in der Regel unter Verwendung der vom Vertex-Shader erstellten Variablen. Wenn die Farbe vom Fragment-Shader bereitgestellt wird, wird sie mit der aktuellen Paint-Farbe mithilfe des Blendmodus gemischt, der beim Zeichnen des Mesh ausgewählt wurde. Uniforms können für zusätzliche Flexibilität an die Fragment- und Vertex-Shader übergeben werden.
Hardware-Buffer-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.