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 API diff. 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, consulta 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
Regional preferences enable users to personalize temperature units, the first day of the week, and numbering systems. A European living in the United States might prefer temperature units to be in Celsius rather than Fahrenheit and for apps to treat Monday as the beginning of the week instead of the US default of Sunday.
New Android Settings menus for these preferences provide users with a
discoverable and centralized location to change app preferences. These
preferences also persist through backup and restore. Several APIs and
intents—such as
getTemperatureUnit
and
getFirstDayOfWeek—
grant your app read access to user preferences, so your app can adjust how it
displays information. You can also register a
BroadcastReceiver on
ACTION_LOCALE_CHANGED
to handle locale configuration changes when regional preferences change.
To find these settings, open the Settings app and navigate to System > Languages & input > Regional preferences.
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 aggiunge il supporto per le immagini HDR (High Dynamic Range) che mantengono più informazioni del sensore quando scatti una foto, il che consente di ottenere colori vivaci e un maggiore contrasto. Android utilizza il formato Ultra HDR, che è completamente compatibile con le immagini JPEG, consentendo alle app di dialogare senza problemi con le immagini HDR, visualizzandole in Standard Dynamic Range (SDR) se necessario.
Il rendering di queste immagini nell'interfaccia utente in HDR viene eseguito automaticamente dal framework quando l'app attiva l'utilizzo dell'interfaccia utente HDR per la finestra di attività tramite una voce del manifest o in fase di esecuzione tramite chiamata di Window.setColorMode(). Puoi anche acquisire immagini statiche Ultra HDR compresse sui dispositivi supportati. Con un maggior numero di colori recuperati
dal sensore, la modifica in post può essere più flessibile. Il valore Gainmap associato alle immagini Ultra HDR può essere utilizzato per eseguire il rendering utilizzando OpenGL o Vulkan.
Zoom, messa a fuoco, post-visualizzazione e altro ancora nelle estensioni della fotocamera
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.
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 supporta i formati audio lossless per esperienze di livello audiophile tramite cuffie con cavo USB. Puoi eseguire query su un dispositivo USB per gli attributi del mixer preferiti, registrare un ascoltatore per le modifiche agli attributi del mixer preferiti e configurare gli attributi del mixer utilizzando la classe AudioMixerAttributes. Questa classe rappresenta il formato, ad esempio la maschera del canale, la frequenza di campionamento e il comportamento del mixer audio. La classe consente di inviare l'audio direttamente, senza miscelazione, regolazione del volume o effetti di elaborazione.
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
Connessione Salute è un repository on-device per i dati relativi a salute e attività fisica degli utenti. Consente agli utenti di condividere dati tra le loro app preferite, con un unico punto di controllo per i dati che vogliono condividere con queste app.
Sui dispositivi con versioni precedenti ad Android 14, Health Connect è disponibile come app scaricabile dal Google Play Store. A partire da Android 14, Connessione Salute fa parte della piattaforma e riceve aggiornamenti tramite gli aggiornamenti di sistema Google Play senza richiedere un download separato. In questo modo, Connessione Salute può essere aggiornata di frequente e le tue app possono fare affidamento sulla disponibilità di Connessione Salute sui dispositivi con Android 14 o versioni successive. Gli utenti possono accedere a Connessione Salute dalle impostazioni del proprio dispositivo, con i controlli della privacy integrati nelle impostazioni di sistema.
Connessione Salute include diverse nuove funzionalità in Android 14, come i percorsi di allenamento, che consentono agli utenti di condividere un percorso del loro allenamento che può essere visualizzato su una mappa. Un percorso è definito come un elenco di località salvate in un determinato periodo di tempo e la tua app può inserire percorsi nelle sessioni di allenamento, collegandoli tra loro. Per garantire che gli utenti abbiano il controllo completo su questi dati sensibili, devono consentire la condivisione di singoli percorsi con altre app.
Per ulteriori informazioni, consulta la documentazione di Connessione Salute e il post del blog sulle novità di Android Salute.
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 i 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 ha introdotto l'animazione di ritorno alla schermata Home predittiva come opzione per gli sviluppatori. Se viene utilizzato in un'app supportata con l'opzione per gli sviluppatori attivata, lo scorrimento indietro mostra un'animazione che indica che il gesto di ritorno all'indietro fa uscire dall'app e torna alla schermata Home.
Android 14 include diversi miglioramenti e nuove indicazioni per il pulsante Indietro predittivo:
- Puoi impostare
android:enableOnBackInvokedCallback=trueper attivare le animazioni di sistema Indietro predittive per ogni attività anziché per l'intera app. - Abbiamo aggiunto nuove animazioni di sistema per accompagnare l'animazione di ritorno alla home page di Android 13. Le nuove animazioni di sistema sono interattive e inter-attività e vengono visualizzate automaticamente dopo la migrazione a Indietro predittivo.
- Abbiamo aggiunto nuove animazioni dei componenti Material per schede inferiori, schede laterali e Ricerca.
- Abbiamo creato linee guida per il design per la creazione di animazioni e transizioni in-app personalizzate.
- Abbiamo aggiunto nuove API per supportare le animazioni di transizione in-app personalizzate:
handleOnBackStarted,handleOnBackProgressed,handleOnBackCancelledinOnBackPressedCallbackonBackStarted,onBackProgressed,onBackCancelledinOnBackAnimationCallback- Utilizza
overrideActivityTransitionanzichéoverridePendingTransitionper le transizioni che rispondono quando l'utente scorri indietro.
Con questa release di anteprima di Android 14, tutte le funzionalità di Indietro predittivo rimangono nascoste dietro un'opzione per sviluppatori. Consulta la guida per gli sviluppatori per eseguire la migrazione della tua app al flusso di ritorno predittivo, nonché la guida per gli sviluppatori per creare transizioni in-app personalizzate.
Override per app del produttore di dispositivi con schermo grande
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.
Override per app per utenti con schermi di grandi dimensioni
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.
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.