Android 14 introduce fantastiche funzionalità e API per gli sviluppatori. Le seguenti risorse ti aiutano a scoprire le funzionalità delle tue app e a iniziare a utilizzare le API correlate.
Per un elenco dettagliato delle API aggiunte, modificate e rimosse, leggi il report diff API. Per informazioni dettagliate sulle API aggiunte, visita la documentazione di riferimento delle API Android. Per Android 14, cerca le API aggiunte nel livello API 34. Per scoprire le aree in cui le modifiche alla piattaforma potrebbero influire sulle tue app, assicurati di consultare le modifiche al comportamento di Android 14 per le app che hanno come target Android 14 e per tutte le app.
Internazionalizzazione
Lingua preferita nelle app
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 theLocaleConfigfile 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 theresfolders of your app modules and any library module dependencies to determine the locales to include in theLocaleConfigfile.Dynamic updates for an app's
localeConfig: Use thesetOverrideLocaleConfig()andgetOverrideLocaleConfig()methods inLocaleManagerto 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
Tre miliardi di persone parlano lingue con genere: lingue in cui le categorie grammaticali, come nomi, verbi, aggettivi e preposizioni, si declinano in base al genere delle persone e degli oggetti di cui parli o a cui ti riferisci. Tradizionalmente, molte lingue con genere grammaticale utilizzano il genere grammaticale maschile come genere predefinito o generico.
Rivolgersi agli utenti con il genere grammaticale sbagliato, ad esempio alle donne con il genere grammaticale maschile, può influire negativamente sul loro rendimento e sul loro atteggiamento. Al contrario, un'interfaccia utente con un linguaggio che riflette correttamente il genere grammaticale dell'utente può migliorare il coinvolgimento dell'utente e offrire un'esperienza utente più personalizzata e dal suono naturale.
Per aiutarti a creare un'interfaccia utente incentrata sull'utente per le lingue con genere, Android 14 introduce l'API di flessione grammaticale, che ti consente di aggiungere il supporto per il genere grammaticale senza eseguire il refactoring dell'app.
Preferenze regionali
Le preferenze regionali consentono agli utenti di personalizzare le unità di misura della temperatura, il primo giorno della settimana e i sistemi di numerazione. Un europeo che vive negli Stati Uniti potrebbe preferire che le unità di misura della temperatura siano in gradi Celsius anziché Fahrenheit e che le app trattino il lunedì come inizio della settimana anziché la domenica, che è il valore predefinito negli Stati Uniti.
I nuovi menu Impostazioni Android per queste preferenze offrono agli utenti un punto di riferimento rilevabile e centralizzato per modificare le preferenze delle app. Queste preferenze rimangono invariate anche durante il backup e il ripristino. Diverse API e
come intenti,
getTemperatureUnit
e
getFirstDayOfWeek—
Concedi alla tua app l'accesso in lettura alle preferenze dell'utente, in modo che possa regolare il modo in cui
visualizza le informazioni. Puoi anche registrare un
BroadcastReceiver attivo
ACTION_LOCALE_CHANGED
per gestire le modifiche alla configurazione delle impostazioni internazionali quando cambiano le preferenze regionali.
Per trovare queste impostazioni, apri l'app Impostazioni e seleziona Sistema > Lingue e input > Preferenze regionali.
Accessibilità
Ridimensionamento non lineare dei caratteri fino al 200%
A partire da Android 14, il sistema supporta il ridimensionamento dei caratteri fino al 200%, offrendo agli utenti opzioni di accessibilità aggiuntive.
Per evitare che gli elementi di testo di grandi dimensioni sullo schermo vengano ridimensionati in modo eccessivo, il sistema applica una curva di ridimensionamento non lineare. Questa strategia di ridimensionamento fa sì che il testo grande non venga ridimensionato alla stessa velocità del testo più piccolo. Il ridimensionamento non lineare dei caratteri consente di preservare la gerarchia proporzionale tra elementi di dimensioni diverse, riducendo i problemi di ridimensionamento lineare del testo a livelli elevati (ad esempio testo troncato o testo che diventa più difficile da leggere a causa di dimensioni del display estremamente grandi).
Testare l'app con il ridimensionamento non lineare dei caratteri
Se utilizzi già le unità di pixel scalabili (sp) per definire le dimensioni del testo, queste opzioni aggiuntive e i miglioramenti del ridimensionamento vengono applicati automaticamente al testo della tua app. Tuttavia, devi comunque eseguire test dell'interfaccia utente con le dimensioni del carattere massime abilitate (200%) per assicurarti che la tua app applichi correttamente le dimensioni del carattere e possa ospitare dimensioni del carattere più grandi senza influire sull'usabilità.
Per attivare le dimensioni del carattere al 200%:
- Apri l'app Impostazioni e vai a Accessibilità > Dimensioni visualizzazione e testo.
- Per l'opzione Dimensioni carattere, tocca l'icona Più (+) finché non viene attivata l'impostazione delle dimensioni massime del carattere, come mostrato nell'immagine che accompagna questa sezione.
Utilizzare unità di pixel scalati (sp) per le dimensioni del testo
Ricorda di specificare sempre le dimensioni del testo in unità sp. Quando la tua app utilizza le unità sp, Android può applicare la dimensione del testo preferita dall'utente e ridimensionarla in modo appropriato.
Non utilizzare unità sp per la spaziatura interna o definire le altezze delle visualizzazioni presupponendo una spaziatura interna implicita: con il ridimensionamento non lineare dei caratteri, le dimensioni sp potrebbero non essere proporzionali, quindi 4 sp + 20 sp potrebbero non essere uguali a 24 sp.
Convertire le unità di pixel scalabili (sp)
Utilizza TypedValue.applyDimension() per convertire le unità sp in pixel e TypedValue.deriveDimension() per convertire i pixel in sp. Questi metodi applicano automaticamente la curva di scalabilità non lineare appropriata.
Evita di codificare le equazioni utilizzando
Configuration.fontScale o
DisplayMetrics.scaledDensity. Poiché il ridimensionamento dei caratteri non è lineare, il campo scaledDensity non è più preciso. Il campo fontScale
deve essere utilizzato solo a scopo informativo perché i caratteri non vengono più
scalati con un singolo valore scalare.
Utilizza le unità sp per lineHeight
Definisci sempre android:lineHeight utilizzando le unità sp anziché dp, in modo che l'altezza della riga venga scalata insieme al testo. In caso contrario, se il testo
è in sp, ma il lineHeight è in dp o px, non viene scalato e appare compresso.
TextView corregge automaticamente lineHeight in modo che le proporzioni che intendi utilizzare vengano mantenute, ma solo se sia textSize sia lineHeight sono definiti in unità sp.
Fotocamera e contenuti multimediali
Ultra HDR per le immagini
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, messa a fuoco, post-visualizzazione e altro ancora nelle estensioni della fotocamera
Android 14 esegue l'upgrade e migliora le estensioni della fotocamera, consentendo alle app di gestire tempi di elaborazione più lunghi, il che consente di migliorare le immagini utilizzando algoritmi ad alta intensità di calcolo come la fotografia in condizioni di scarsa illuminazione su supportati dispositivi. Queste funzionalità offrono agli utenti un'esperienza ancora più solida quando utilizzano le funzionalità di estensione della videocamera. Ecco alcuni esempi di questi miglioramenti:
- La stima della latenza di elaborazione delle foto dinamiche fornisce stime della latenza di acquisizione delle foto molto più accurate in base alle condizioni ambientali e della scena attuali. Chiama
CameraExtensionSession.getRealtimeStillCaptureLatency()per ottenere un oggettoStillCaptureLatencycon due metodi di stima della latenza. Il metodogetCaptureLatency()restituisce la latenza stimata traonCaptureStartedeonCaptureProcessStarted(), mentre il metodogetProcessingLatency()restituisce la latenza stimata traonCaptureProcessStarted()e il frame elaborato finale disponibile. - Supporto per i callback relativi all'avanzamento dell'acquisizione in modo che le app possano mostrare l'avanzamento corrente delle operazioni di elaborazione di acquisizioni di foto ancora in corso. Puoi verificare se questa funzionalità è disponibile con
CameraExtensionCharacteristics.isCaptureProcessProgressAvailablee, in questo caso, implementare il callbackonCaptureProcessProgressed(), a cui viene passato come parametro il progresso (da 0 a 100). Metadati specifici per le estensioni, ad esempio
CaptureRequest.EXTENSION_STRENGTHper regolare l'intensità di un effetto dell'estensione, ad esempio la quantità di sfocatura dello sfondo conEXTENSION_BOKEH.Funzionalità Postview per l'acquisizione di foto nelle estensioni della fotocamera, che fornisce un'immagine meno elaborata più rapidamente rispetto all'immagine finale. Se un'estensione ha aumentato la latenza di elaborazione, è possibile fornire un'immagine post-visualizzazione come segnaposto per migliorare l'esperienza utente e sostituirla in un secondo momento con l'immagine finale. Puoi verificare se questa funzionalità è disponibile con
CameraExtensionCharacteristics.isPostviewAvailable. Dopodiché puoi passare unOutputConfigurationaExtensionSessionConfiguration.setPostviewOutputConfiguration.Supporto di
SurfaceViewche consente un percorso di rendering dell'anteprima più ottimizzato e a basso consumo energetico.Supporto per il tocco per mettere a fuoco e lo zoom durante l'utilizzo dell'estensione.
Zoom nel sensore
Quando REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE in
CameraCharacteristics contiene
SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW, la tua app
puoi utilizzare le funzionalità avanzate del sensore per assegnare a uno stream RAW ritagliata gli stessi
pixel del campo visivo completo utilizzando un CaptureRequest
con un target RAW con il caso d'uso dello stream impostato su
CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW.
Grazie all'implementazione dei controlli di override della richiesta, la videocamera aggiornata offre agli utenti il controllo dello zoom anche prima che gli altri controlli della videocamera siano pronti.
Audio USB lossless
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.
Produttività e strumenti per gli sviluppatori
Gestore delle credenziali
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.
Connessione Salute
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.
Aggiornamenti di OpenJDK 17
Android 14 continua l'opera di aggiornamento delle librerie di base di Android per allinearsi alle funzionalità delle ultime release OpenJDK LTS, inclusi gli aggiornamenti delle librerie e il supporto del linguaggio Java 17 per gli sviluppatori di app e piattaforme.
Sono incluse le seguenti funzionalità e i seguenti miglioramenti:
- Sono stati aggiornati circa 300 corsi
java.baseper il supporto di Java 17. - Blocchi di testo, che introducono stringhe letterali su più righe nel linguaggio di programmazione Java.
- Corrispondenza pattern per instanceof, che consente di trattare un oggetto come se avesse un tipo specifico in un
instanceofsenza variabili aggiuntive. - Classi sigillate, che ti consentono di limitare le classi e le interfacce che possono estenderle o implementarle.
Grazie agli aggiornamenti di sistema Google Play (Project Mainline), oltre 600 milioni di dispositivi sono abilitati a ricevere gli aggiornamenti più recenti di Android Runtime (ART) che includono queste modifiche. Ciò fa parte del nostro impegno a offrire alle app un ambiente più coerente e sicuro su tutti i dispositivi e a fornire nuove funzionalità e capacità agli utenti indipendentemente dalle release della piattaforma.
Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Miglioramenti per gli store
Android 14 introduce diverse API PackageInstaller che consentono agli store di app di migliorare l'esperienza utente.
Richiedere l'approvazione dell'installazione prima del download
L'installazione o l'aggiornamento di un'app potrebbe richiedere l'approvazione dell'utente.
Ad esempio, quando un programma di installazione che utilizza l'autorizzazione REQUEST_INSTALL_PACKAGES tenta di installare una nuova app. Nelle versioni precedenti di Android, gli store possono richiedere l'approvazione dell'utente solo dopo che gli APK sono stati scritti nella sessione di installazione e la sessione è stata committata.
A partire da Android 14, il metodo requestUserPreapproval() consente agli installatori di richiedere l'approvazione dell'utente prima di confermare la sessione di installazione. Questo miglioramento consente a un negozio di app di posticipare il download di eventuali APK fino a quando l'installazione non è stata approvata dall'utente. Inoltre, una volta che un utente ha approvato l'installazione, l'app store può scaricare e installare l'app in background senza interrompere l'utente.
Richiedere la responsabilità per gli aggiornamenti futuri
Il metodo setRequestUpdateOwnership() consente a un installatore di indicare al sistema che intende essere responsabile degli aggiornamenti futuri di un'app che sta installando. Questa funzionalità consente l'applicazione della proprietà degli aggiornamenti, il che significa che solo il proprietario dell'aggiornamento è autorizzato a installare aggiornamenti automatici dell'app. L'applicazione della proprietà degli aggiornamenti contribuisce a garantire che gli utenti ricevano gli aggiornamenti solo dall'app store previsto.
Qualsiasi altro programma di installazione, inclusi quelli che utilizzano l'autorizzazione INSTALL_PACKAGES, deve ricevere l'approvazione esplicita dell'utente per installare un aggiornamento. Se un utente decide di procedere con un
aggiornamento da un'altra origine, la proprietà dell'aggiornamento viene persa.
Aggiornare le app in orari meno critici
In genere, gli store per app vogliono evitare di aggiornare un'app in uso attivo perché questo comporta l'interruzione dei processi in esecuzione dell'app, il che potrebbe interrompere l'attività dell'utente.
A partire da Android 14, l'API InstallConstraints offre ai programmatori di installazioni un modo per assicurarsi che gli aggiornamenti delle app vengano eseguiti al momento opportuno. Ad esempio, un app store può chiamare il metodo
commitSessionAfterInstallConstraintsAreMet() per
assicurarsi che un aggiornamento venga eseguito solo quando l'utente non interagisce più con l'app in questione.
Installare facilmente le suddivisioni facoltative
Con gli APK divisi, le funzionalità di un'app possono essere pubblicate in file APK separati,
invece che come APK monolitico. Gli APK suddivisi consentono agli store di app di ottimizzare la distribuzione di diversi componenti dell'app. Ad esempio, gli store di app potrebbero eseguire l'ottimizzazione in base alle proprietà del dispositivo di destinazione. L'API
PackageInstaller supporta le suddivisioni dalla sua
introduzione nel livello API 22.
In Android 14, il metodo setDontKillApp() consente a un installatore di indicare che i processi in esecuzione dell'app non devono essere interrotti quando vengono installati nuovi split. Gli store possono utilizzare questa funzionalità per installare senza problemi nuove funzionalità di un'app mentre l'utente la utilizza.
Bundle di metadati dell'app
A partire da Android 14, il programma di installazione del pacchetto Android ti consente di specificare i metadati dell'app, ad esempio le prassi di sicurezza dei dati, da includere nelle pagine dello store come Google Play.
Rilevare quando gli utenti acquisiscono screenshot del dispositivo
Per creare un'esperienza più standardizzata per il rilevamento degli screenshot, Android 14 introduce un'API di rilevamento degli screenshot che tutela la privacy. Questa API consente alle app di registrare callback in base all'attività. Questi callback vengono richiamati e l'utente riceve una notifica quando acquisisce uno screenshot mentre l'attività è visibile.
Esperienza utente
Azioni personalizzate del foglio di condivisione e ranking migliorato
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.
Supporto di animazioni integrate e personalizzate per il gesto Indietro predittivo
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=trueto 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,handleOnBackCancelledinOnBackPressedCallbackonBackStarted,onBackProgressed,onBackCancelledinOnBackAnimationCallback- Use
overrideActivityTransitioninstead ofoverridePendingTransitionfor 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.
Override per app del produttore di dispositivi con schermo grande
Gli override per app consentono ai produttori di modificare il comportamento delle app sui dispositivi con schermi grandi. Ad esempio, l'override FORCE_RESIZE_APP indica al sistema di ridimensionare l'app in base alle dimensioni del display (evitando la modalità di compatibilità delle dimensioni) anche se resizeableActivity="false" è impostato nel file manifest dell'app.
Le sostituzioni hanno lo scopo di migliorare l'esperienza utente su schermi di grandi dimensioni.
Le nuove proprietà del file manifest ti consentono di disattivare alcuni override del produttore del dispositivo per la tua app.
Override per app per utenti con schermi di grandi dimensioni
Le sostituzioni per app modificano il comportamento delle app sui dispositivi con schermi grandi. Ad esempio, l'override del produttore del dispositivo OVERRIDE_MIN_ASPECT_RATIO_LARGE imposta le proporzioni dell'app su 16:9 indipendentemente dalla configurazione dell'app.
Android 14 QPR1 consente agli utenti di applicare sostituzioni per app tramite un nuovo menu delle impostazioni sui dispositivi con schermi di grandi dimensioni.
Condivisione della schermata dell'app
La condivisione dello schermo dell'app consente agli utenti di condividere una finestra dell'app anziché l'intero schermo del dispositivo durante la registrazione dei contenuti dello schermo.
Con la condivisione schermo dell'app, la barra di stato, la barra di navigazione, le notifiche e altri elementi dell'interfaccia utente di sistema sono esclusi dalla visualizzazione condivisa. Vengono condivisi solo i contenuti dell'app selezionata.
La condivisione dello schermo dell'app migliora la produttività e la privacy consentendo agli utenti di eseguire più app, ma limitando la condivisione dei contenuti a una singola app.
Risposta rapida basata su LLM in Gboard su Pixel 8 Pro
Sui dispositivi Pixel 8 Pro con il Feature Drop di dicembre, gli sviluppatori possono provare risposte rapide di qualità superiore in Gboard grazie ai modelli linguistici di grandi dimensioni (LLM) on-device in esecuzione su Google Tensor.
Questa funzionalità è disponibile come anteprima limitata per l'inglese americano in WhatsApp, Line e KakaoTalk. Richiede l'utilizzo di un Pixel 8 Pro con Gboard come tastiera.
Per provarla, attiva prima la funzionalità in Impostazioni > Opzioni sviluppatore > Impostazioni AICore > Attiva AiCore persistente.
Quindi, apri una conversazione in un'app supportata per visualizzare la Risposta rapida basata su LLM nella barra dei suggerimenti di Gboard in risposta ai messaggi in arrivo.
Grafica
I percorsi sono interrogabili e interpolabili
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.
Mesh personalizzate con shader di vertici e frammenti
Android supporta da tempo il disegno di mesh triangolari con ombreggiatura personalizzata, ma il formato della mesh di input è stato limitato a poche combinazioni di attributi predefinite. Android 14 aggiunge il supporto per le matrici personalizzate, che possono essere definite come triangoli o strisce di triangoli, e possono, facoltativamente, essere indicizzate. Questi mesh sono specificati con attributi personalizzati, passi di vertice, variabili e shader di vertici e frammenti scritti in AGSL.
Lo shader vertex definisce le varianti, come posizione e colore, mentre lo shader fragment può facoltativamente definire il colore del pixel, in genere utilizzando le varianti create dallo shader vertex. Se il colore viene fornito dall'shader frammento, viene mischiato con il colore Paint corrente utilizzando la modalità di miscela selezionata durante il disegno del mesh. Le uniformi possono essere passate agli shader di frammento e vertice per una maggiore flessibilità.
Renderer del buffer hardware per 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.