WindowManager
Ultimo aggiornamento | Release stabile | Release Candidate | Versione beta | Versione alpha |
---|---|---|---|---|
16 ottobre 2024 | 1.3.0 | - | - | 1.4.0-alpha05 |
Dichiarazione delle dipendenze
Per aggiungere una dipendenza da WindowManager, devi aggiungere il repository Maven di Google al tuo progetto. Per ulteriori informazioni, consulta il repository Maven di Google.
Aggiungi le dipendenze per gli elementi necessari nel file build.gradle
per la tua app o il tuo modulo:
Alla moda
dependencies { implementation "androidx.window:window:1.3.0" // For Java-friendly APIs to register and unregister callbacks implementation "androidx.window:window-java:1.3.0" // For RxJava2 integration implementation "androidx.window:window-rxjava2:1.3.0" // For RxJava3 integration implementation "androidx.window:window-rxjava3:1.3.0" // For testing implementation "androidx.window:window-testing:1.3.0" }
Kotlin
dependencies { implementation("androidx.window:window:1.3.0") // For Java-friendly APIs to register and unregister callbacks implementation("androidx.window:window-java:1.3.0") // For RxJava2 integration implementation("androidx.window:window-rxjava2:1.3.0") // For RxJava3 integration implementation("androidx.window:window-rxjava3:1.3.0") // For testing implementation("androidx.window:window-testing:1.3.0") }
Feedback
Il tuo feedback ci aiuta a migliorare Jetpack. Facci sapere se riscontri nuovi problemi o hai idee per migliorare questa raccolta. Prima di crearne uno nuovo, dai un'occhiata ai problemi esistenti in questa raccolta. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione del Monitoraggio problemi.
Versione 1.4
Versione 1.4.0-alpha05
16 ottobre 2024
androidx.window:window-*:1.4.0-alpha05
viene rilasciato. La versione 1.4.0-alpha05 contiene questi commit.
Nuove funzionalità
- Aggiungi funzioni di utilità per ottenere
widthDp
eheightDp
daWindowMetrics
.
Modifiche all'API
- Aggiungi
widthDp
eheightDp
aWindowMetrics
. (Ide026) - Rimuovi l'API
WindowInsets
sperimentale. (I68a71) - Aggiorna i nomi dei metodi di controllo dei limiti in
isAtLeast
(Ib0ab7)
Versione 1.4.0-alpha04
2 ottobre 2024
androidx.window:window-*:1.4.0-alpha04
viene rilasciato. La versione 1.4.0-alpha04 contiene questi commit.
Modifiche all'API
- È stato aggiunto un metodo per calcolare
WindowSizeClass
daWindowMetrics
. (874dba) - Per maggiore chiarezza, modifica i metodi
WindowSizeClass
incontainsWidthDp
,containsHeightDp
econtainsWindowSizeDp
. (fa760d) - Converti
WindowAreaController
in una classe di base astratta. (I90893)
Correzioni di bug
- Aggiungi il supporto per i limiti relativi durante la creazione di un test
FoldingFeature
. (2e6b3e) - Correzioni di bug generali durante la selezione di un
WindowSizeClass
.
Versione 1.4.0-alpha03
18 settembre 2024
androidx.window:window-*:1.4.0-alpha03
viene rilasciato. La versione 1.4.0-alpha03 contiene questi commit.
Nuove funzionalità
- Aggiungi un metodo di utilità per ottenere un
WindowSizeClass
daWindowMetrics
. (I83f1f) - Rinomina
isAtLeast
incontainsBreakpoint
. (I85b47) - Aggiungi un sovraccarico a
computeWindowSizeClass
utilizzando i valori float. (I3dcb2, b/364677934, b/364677802, b/364680886)
Correzioni di bug
- Aggiungi i punti di interruzione mancanti all'insieme di punti di interruzione
WindowSizeClass
predefinito. - È stato risolto un bug per cui, in alcuni casi, le dimensioni compatte non venivano selezionate correttamente.
Versione 1.4.0-alpha02
4 settembre 2024
androidx.window:window-*:1.4.0-alpha02
viene rilasciato. La versione 1.4.0-alpha02 contiene questi commit.
Nuove funzionalità
Aggiunta del supporto per WindowSizeClass
personalizzati.
- Apri il costruttore di
WindowSizeClass
in modo che gli sviluppatori possano utilizzare il proprio. - Aggiungi metodi di utilità
isAtLeast
in modo che gli sviluppatori possano elaborare una serie di valoriisAtLeast
.WindowSizeClass
- Aggiungi una funzione di estensione su
Set<WindowSizeClass>
per calcolare la corrispondenza migliore dall'insieme. - Aggiungi costanti per i punti di interruzione consigliati per Android.
- Aggiungi l'insieme di punti di interruzione corrispondente a quelli consigliati per Android.
Modifiche all'API
- Aggiorna i nomi dei metodi di limiti per
WindowSizeClass
. (If89a6) - Aggiornare l'API
WindowSizeClass
per supportare l'aggiunta di nuovi valori di breakpoint in futuro. Invece di avere limiti assoluti, utilizziamo i limiti inferiori e consigliamo agli sviluppatori di utilizzare i controlli dei limiti inferiori durante l'elaborazione di unWindowSizeClass
.WindowWidthSizeClass
eWindowHeightSizeClass
esistenti verranno ritirati perché non verranno ulteriormente sviluppati. (I014ce)
Versione 1.4.0-alpha01
7 agosto 2024
androidx.window:window-*:1.4.0-alpha01
viene rilasciato. La versione 1.4.0-alpha01 contiene questi commit.
Nuove funzionalità
- La bloccatura dell'attività consente alle app di bloccare i contenuti in un contenitore e di isolare la navigazione dall'altro contenitore.
- Separatore interattivo consente alle app di visualizzare un separatore fisso o trascinabile tra le due attività in una presentazione divisa.
- L'opzione Diminuzione della luminosità della finestra di dialogo a schermo intero consente alle app di specificare l'area di attenuazione della finestra di dialogo, per attenuare l'intera finestra dell'attività o solo il contenitore che mostra la finestra di dialogo.
- La chiamata di ritorno Informazioni sulla finestra Attività integrata consente alle app di ricevere continuamente aggiornamenti della finestra Attività integrata.
- Incorporazione dello sfondo dell'animazione consente alle app di specificare lo sfondo dell'animazione, migliorando la qualità dell'animazione di transizione quando viene utilizzato
ActivityEmbedding
. - La gestione migliorata di ActivityStack consente alle app di avere un maggiore controllo sul
ActivityStacks
quando viene utilizzatoActivityEmbedding
, ad esempio: - Avvio di un'attività in un
ActivityStack
specificato - Completare un
ActivityStack
Modifiche all'API
Una nuova API
WindowInfoTracker#supportedPostures
:- Un'API per determinare se il dispositivo supporta la modalità da tavolo per i dispositivi pieghevoli. Aggiunge WindowAreaSessionPresenter#getWindow
Aggiungi le API per supportare il
ActivityStack
blocco:- Corso
SplitPinRule
SplitController#pinTopActivityStack
SplitController#unpinTopActivityStack
- Corso
Aggiungi le API per attivare e configurare il divisore interattivo
- Corso
DividerAttributes
SplitAttributes.Builder#setDividerAttributes
- Corso
Aggiungere API per impostare
EmbeddingConfiguration
eDimAreaBehavior
per le finestre di dialogo- Corso
EmbeddingConfiguration
- Corso
DimAreaBehavior
ActivityEmbeddingController#setEmbeddingConfiguration
- Corso
Aggiungere API per ricevere aggiornamenti sulle informazioni della finestra di attività incorporata
- Corso
EmbeddedActivityWindowInfo
ActivityEmbeddingController#embeddedActivityWindowInfo
- Corso
Aggiungere API per impostare lo sfondo dell'animazione incorporata
EmbeddingAnimationBackground
SplitAttributes.Builder#setAnimationBackground
Aggiungi le API per completare
ActivityStacks
ActivityEmbeddingController#finishActivityStacks
Aggiungere API per impostare il lancio
ActivityStack
ActivityEmbeddingOptions#setLaunchingActivityStack
Le seguenti API sono stabili e non sono più sperimentali:
ActivityEmbeddingController#invalidateVisibleActivityStacks
(spostato da SplitController#invalidateTopVisibleSplitAttributes)ActivityEmbeddingController#getActivityStack
SplitController#updateSplitAttributes
Aggiungi le API per 1.4. (I56774)
Correzioni di bug
- Corregge il bug su alcuni dispositivi in cui viene restituito UNAVAILABLE anziché ACTIVE quando una sessione è attiva.
- Viene rimosso il supporto di
transferActivityToWindowArea
sui dispositivi convendorApiLevel
pari a 2 a causa del supporto instabile dell'API. - Introduzione dell'API per abilitare il trascinamento a schermo intero per il divisore spostabile dell'inserimento di attività. (I645c9)
- Consenti alle app di disattivare le animazioni di
ActivityEmbedding
tramite i parametri di animazione perSplitAttributes
. (Idc01a) - È stato rimosso il riepilogo manuale dell'accesso alle nuove API di piattaforma, poiché avviene automaticamente tramite la definizione del modello API quando si utilizza R8 con AGP 7.3 o versioni successive (ad es. R8 versione 3.3) e per tutte le build quando si utilizza AGP 8.1 o versioni successive (ad es. D8 versione 8.1). I clienti che non utilizzano AGP sono invitati a eseguire l'aggiornamento alla versione 8.1 o successive di D8. Consulta questo articolo per ulteriori dettagli. (Ia60e0, b/345472586)
- Consenti alle estensioni di accettare parametri di animazione per
SplitAttributes
in modo che il dispositivo possa utilizzarli per le transizioni di animazione. (Iede00) - Nascondere le API overlay (Ic4251)
- Introduzione di API per configurare il divisore fisso o trascinabile per la suddivisione (Ia7a78)
- È stata aggiunta la densità a
WindowMetrics
(Id6723) - Aggiungi l'API per ottenere
SupportedPostures
. (If557a) - Rimuovere
setLaunchingActivityStack
dall'API sperimentale (I191cf) - Presenta
ActivityEmbeddingController#embeddedActivityWindowInfo
(I24312) - Ritirare
#getToken
e aggiungere#getActivityStackToken
(Ie0471) - Introduzione dell'adattatore di callback per l'API di flusso
embeddedActivityWindowInfo
(Ida77f) - Aggiungere un adattatore di callback per l'API di flusso overlayInfo (I7264f)
- Inserisci
WindowSdkExtensionsRule
per sostituireextensionsVersion
per i test. (Ifb928) - - Esegui la migrazione di
#setLaunchingActivityStack
a Bundle per la compatibilità con gli utilizzi diActivityOptionsCompat
.- Gli utenti devono passare
activityOptions.toBundle
anzichéActvityOptions
stesso. - Rimuovi
#setLaunchingActivityStack(Activity)
. Gli utenti devono eseguire la migrazione per utilizzareActivityEmbeddingController#getActivityStac(Activity)
per ottenere unActivityStack
e passare ilActivityStack
a#setLaunchingActivityStack
. (Ie0ccc)
- Gli utenti devono passare
- - Introduci
ActivityStack.Token
eSpltInfo.Token
come identificatori per la comunicazione tra WM Jetpack ed estensioni.- Ritira/sostituisce le API per prendere/restituire il token anziché IBinder. (I12b24)
- - Presenta
ActivityEmbeddingController#invalidateVisibleActivityStacks
- Rimuovi
SplitController#invalidateTopVisibleSplitAttributes
perché la funzionalità è consolidata in#invalidateVisibleActivityStacks
(I02ef5)
- Rimuovi
- - Aggiunta dell'API per impostare la configurazione dell'embedding. (I59a4a)
- - Aggiunta di API
ActivityStack
androidx.Window
per bloccare/sbloccare le app in primo piano- Aggiornamento dell'app demo per consentire il blocco/sblocco della scheda in alto
ActivityStack
(I24dd3)
- Aggiornamento dell'app demo per consentire il blocco/sblocco della scheda in alto
- Aggiungi di nuovo
#finishActivityStacks
eActivityEmbeddingOptions
(Ic1ab3) - Rimuovi le API instabili. (Ibc534, b/302380585)
Versione 1.3
Versione 1.3.0
29 maggio 2024
androidx.window:window-*:1.3.0
viene rilasciato. La versione 1.3.0 contiene questi commit.
Modifiche importanti dalla versione 1.2.0
- Supporto di Kotlin Multiplatform per le classi di dimensioni della finestra.
Versione 1.3.0-rc01
14 maggio 2024
WindowManager
Jetpack 1.3 offre il supporto di Kotlin Multiplatform per le funzionalità WindowSizeClass
, oltre a diverse correzioni di bug.
androidx.window:window-*:1.3.0-rc01
viene rilasciato. La versione 1.3.0-rc01 contiene questi commit.
Versione 1.3.0-beta02
1° maggio 2024
androidx.window:window-*:1.3.0-beta02
viene rilasciato. La versione 1.3.0-beta02 contiene questi commit.
Modifiche all'API
- Rimuovere il supporto per la creazione e l'utilizzo di
WindowSizeClass
personalizzati. (Id1143)
Correzioni di bug
- Correzioni
KotlinReflectionInternalError
causate dall'eliminazione di alcuni file da parte di ProGuard in determinate implementazioni dei dispositivi. (I01b02)
Versione 1.3.0-beta01
3 aprile 2024
androidx.window:window-*:1.3.0-beta01
viene rilasciato. La versione 1.3.0-beta01 contiene questi commit.
Versione 1.3.0-alpha03
6 marzo 2024
androidx.window:window-*:1.3.0-alpha03
viene rilasciato. La versione 1.3.0-alpha03 contiene questi commit.
Modifiche all'API
- Suddividi
WindowSizeClassUtil
in metodi più mirati. (Ie9292) - Ripristina
WindowSizeClass#compute
(I21355, b/324293374)
Correzioni di bug
- Corregge l'arresto anomalo in cui il contesto fornito non veniva simballato correttamente. (94d10ce , b/318787482)
Versione 1.3.0-alpha02
7 febbraio 2024
androidx.window:window-*:1.3.0-alpha02
viene rilasciato. La versione 1.3.0-alpha02 contiene questi commit.
Nuove funzionalità
- Aggiornamenti apportati all'API Window Size Class per migliorare la flessibilità per gli sviluppatori che vogliono utilizzare le proprie classi di dimensioni.
Modifiche all'API
- Aggiungi vincoli di altezza al selettore di larghezza. (I23393)
- Aggiungi funzioni di utilità per scegliere un
WindowSizeClass
da un insieme. Aggiungere funzioni di punteggio sperimentali per consentire agli sviluppatori di scrivere i propri selettori. Aggiungi una funzione di estensione del selettore per scegliere il valoreWindowSizeClass
più ampio all'interno di un determinato limite. (I0c944) - Apri il costruttore
WindowSizeClass
in modo da poter aggiungere punti di interruzione personalizzati. (Ic1ff3) - Aggiungi una funzione di praticità per creare una classe di dimensioni da larghezza, altezza e densità. (If67f4)
Correzioni di bug
- Correggere l'eccezione quando il valore in virgola mobile viene troncato a 0. (272ffac)
Versione 1.3.0-alpha01
15 novembre 2023
androidx.window:window-*:1.3.0-alpha01
viene rilasciato. La versione 1.3.0-alpha01 contiene questi commit.
Nuove funzionalità
- Esponi API di finestra sperimentali per accedere allo schermo posteriore.
- Le API di test per la creazione di un
FoldingFeature
sono ora stabili. - Le API di test per la configurazione di valori
ActivityEmbedding
falsi sono ora stabili. WindowLayoutInfoPublisherRule
ora segnala la sostituzione quando si ottiene un valore da unUiContext
.WindowInfoTracker
registra i dati delle funzionalità di piegatura nei parametriUiContext
.- Esponi la versione delle estensioni sul dispositivo.
- Costanti
WindowProperties
per le sostituzioni per app dell'utente:PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
: informa il sistema che l'app ha disattivato l'override della compatibilità del formato visibile dall'utente.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE
: informa il sistema che l'app ha disattivato l'opzione a schermo intero delle impostazioni di override della compatibilità del formato dell'utente
Versione 1.2
Versione 1.2.0
15 novembre 2023
androidx.window:window-*:1.2.0
viene rilasciato. La versione 1.2.0 contiene questi commit.
Modifiche importanti dalla versione 1.1.0
- Esponi API di finestra sperimentali per accedere allo schermo posteriore.
- Le API di test per la creazione di un
FoldingFeature
sono ora stabili. - Le API di test per la configurazione di valori
ActivityEmbedding
falsi sono ora stabili. WindowLayoutInfoPublisherRule
ora segnala la sostituzione quando si ottiene un valore da unUiContext
.WindowInfoTracker
registra i dati delle funzionalità di piegatura nei parametriUiContext
.- Esponi la versione delle estensioni sul dispositivo.
Versione 1.2.0-rc01
1° novembre 2023
androidx.window:window-*:1.2.0-rc01
viene rilasciato. La versione 1.2.0-rc01 contiene questi commit.
Nuove funzionalità
- Esponi API di finestra sperimentali per accedere allo schermo posteriore.
- Le API di test per la creazione di un
FoldingFeature
sono ora stabili. - Le API di test per la configurazione di valori
ActivityEmbedding
falsi sono ora stabili. WindowLayoutInfoPublisherRule
ora segnala la sostituzione quando si ottiene un valore da unUiContext
.WindowInfoTracker
registra i dati delle funzionalità di piegatura nei parametriUiContext
.- Esponi la versione delle estensioni sul dispositivo.
Versione 1.2.0-beta04
18 ottobre 2023
androidx.window:window-*:1.2.0-beta04
viene rilasciato. La versione 1.2.0-beta04 contiene questi commit.
Modifiche all'API
- Rimuovi le API instabili. (Ibc534, b/302380585)
Versione 1.2.0-beta03
20 settembre 2023
androidx.window:window-*:1.2.0-beta03
viene rilasciato. La versione 1.2.0-beta03 contiene questi commit.
Nuove funzionalità
- Aggiungi controlli
RequiresApi
per le API che richiedono una versione specifica delle estensioni per funzionare correttamente. - Aggiungi un'API per esporre la versione delle estensioni sul dispositivo.
Modifiche all'API
- Aggiungi un'annotazione alla versione richiesta dell'estensione SDK della finestra nelle API pubbliche.
- Rimuovi
isXXXSupported
nel componente di incorporamento delle attività. (Ie3dae)
- Rimuovi
- Inserisci
WindowSdkExtensions
per segnalare la versione dell'estensione sul dispositivo.- Inserisci
RequiresWindowSdkExtension
per annotare la versione minima richiesta dell'estensione. (I05fd4)
- Inserisci
- Imposta
WindowAreaInfo#getCapability
come non null. (I17048)
Versione 1.2.0-beta01
26 luglio 2023
androidx.window:window-*:1.2.0-beta01
viene rilasciato. La versione 1.2.0-beta01 contiene questi commit.
Nuove funzionalità
- Esponi API di finestra sperimentali per accedere allo schermo posteriore.
- Le API di test per la creazione di un
FoldingFeature
sono ora stabili. - Le API di test per la configurazione di valori
ActivityEmbedding
falsi sono ora stabili. WindowLayoutInfoPublisherRule
ora segnala la sostituzione quando si ottiene un valore da unUiContext
.WindowInfoTracker
registra i dati delle funzionalità di piegatura nei parametriUiContext
.
Modifiche all'API
- Le API
WindowArea
vengono contrassegnate come sperimentali per consentire la continuazione delle modifiche dell'API per una release stabile nella versione 1.3 (I857f5) - File API aggiornati per annotare la soppressione della compatibilità (I8e87a, b/287516207)
Versione 1.2.0-alpha03
21 giu 2023
androidx.window:window-*:1.2.0-alpha03
viene rilasciato. La versione 1.2.0-alpha03 contiene questi commit.
Nuove funzionalità
- Rimozione delle API obsolete dall'interfaccia API.
- Aggiungi API per supportare le visualizzazioni simultanee.
- Aggiungi una proprietà per disattivare l'override del ridimensionamento forzato.
- Aggiungi una proprietà per disattivare l'override delle proporzioni minime.
- Stabilizzare
ActivityEmbeddingRule
per supportare i test delle unità relativi all'inserimento di attività.
Modifiche all'API
- Rimuovere le API deprecate (I18d39)
- Aggiunta del supporto per le visualizzazioni simultanee. (Ifcbb0)
Correzioni di bug
- Aggiunta della proprietà compatibilità di disattivazione per l'override della modifica forzata delle dimensioni (Ie7ab1)
- Rimuove
SESSION_STATE_CONTENT_INVISIBLE
dall'interfaccia delle estensioni. (I6ed19) - Stabilizza
ActivityEmbeddingRule
per supportare i test di unità relativi all'inserimento di attività. (I8d6b6) - Aggiunta della proprietà compatibilità di disattivazione per l'override del formato minimo. (I66390)
- Rimuove le API WindowArea deprecate (Ieb67c)
- Rinomina la proprietà del loop della richiesta di orientamento in
PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED
. (Ie2fbd) - Aggiorna i nomi delle costanti di sessione dell'area della finestra (I83675)
- Aggiunta della proprietà compatibilità di disattivazione che ignora il loop di richiesta di orientamento quando viene rilevato (I0a7a2)
- Aggiungi
WindowAreaComponent#STATUS_ACTIVE
per indicare che la funzionalità è già attiva. (I62bc3) - Aggiungere API
RearDisplayPresentationMode
(I0401c) - Rimozione dell'API di colore di sfondo per la versione stabile. (I34c3e)
- Nascondi le API Window Area. (I39de0)
- Aggiungi metodi per eseguire l'override di
SplitInfo
inSplitController
. Aggiungi metodi di test per creare un doppio perSplitInfo
eActivityStack
. (Icd69f) - Imposta il tag come facoltativo per
ActivityRule.Builder
. (Ib0b44) - Rimuovi
RatioSplitType
,ExpandContainersSplit
eHingeSplitType
. Ora sonoSplitType
.- Sostituisci
#splitEqually()
,#expandContainers()
e#splitByHinge
con le costantiSplitType SPLIT_TYPE_EQUAL
,SPLIT_TYPE_EXPAND
eSPLIT_TYPE_HINGE
- Rimuovi la funzionalità per impostare il tipo di riserva del tipo di suddivisione a cerniera. Se il tipo di suddivisione a cerniera non può essere applicato a causa dello stato corrente del dispositivo o della finestra, viene utilizzato il contenitore delle attività principale suddiviso in modo uguale. Utilizza
SplitController#setSplitAttributesCalculator
per personalizzare il tipo di suddivisione di riserva. (Ifcc59)
- Sostituisci
- Ritiro
add
/removeSplitCallback
- Sposta
add
/removeSplitCallback
inSplitControllerCallbackAdapter
- Aggiungere il supporto di
Flow
per ottenere l'elenco diSplitInfo
(I7f1b6)
- Sposta
- Aggiungi una regola di test per
ActivityEmbeddingController
(I42e9b) - Ridenominazione di
ActivityOptionsCompat
inActivityEmbeddingOptions
(I89301) - Aggiungi
splitSupportStatus
per indicare se l'inserimento di attività è disponibile. (I10024) - Introduci
SplitAttributes.BackgroundColor
per rappresentare meglio il valoreDEFAULT
. È necessario chiarire che il colore di sfondo dell'animazione non opaco non è supportato, pertanto tutti i colori non opachi verranno trattati come predefiniti, il che significa che verrà utilizzato il colore di sfondo della finestra del tema corrente. (Ic6b95) - Sostituisci
alwaysAllow()
ealwaysDisallow()
conALWAYS_ALLOW
eALWAYS_DISALLOW
. (I3057b) - Aggiungi le API per
SplitRule
,SplitAttributes
,SplitAttributesCalculator
. (I92d23) - Aggiungi
TestActivityStack
per creareActivityStack
per i test- Aggiungi
TestSplitInfo
per creareSplitInfo
per i test. (I8e779)
- Aggiungi
- Aggiungere un modo per creare
SplitAttributesCalculatorParams
falsi in modo che gli sviluppatori possano verificare il proprioSplitAttributesCalculator
personalizzato (Id4a6e) - Aggiungi
WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context)
eWindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context)
(I66c7f)
Versione 1.2.0-alpha02
7 giugno 2023
androidx.window:window-*:1.2.0-alpha02
viene rilasciato. La versione 1.2.0-alpha02 contiene questi commit.
Nuove funzionalità
- Aggiorna l'API di test in modo che abbia una costante per le funzionalità di piegatura non specificate.
- La sostituzione con
WindowLayoutInfoPublishRule
sostituirà tutti i valori diwindowLayoutInfo
, inclusa l'API basata su Context.
Modifiche all'API
- Aggiungi una costante per la funzionalità di piegatura centrale non specificata. (I7530c)
Correzioni di bug
- Aggiorna
WindowLayoutInfoPublishRule
per supportare le sostituzioni suWindowLayoutInfo
basato suContext
. (I2037a)
Versione 1.2.0-alpha01
24 maggio 2023
androidx.window:window-*:1.2.0-alpha01
viene rilasciato. La versione 1.2.0-alpha01 contiene questi commit.
Nuove funzionalità
Stabilizzare le API di test relative all'inserimento di attività e WindowLayoutInfoTracker
. ActivityEmbeddingRule
è stata promossa a stabile.
La versione WindowMetricsCalculatorRule
è stata promossa a stabile.
Le funzioni di utilità per creare un FoldingFeature
per il test sono state promosse a stabili.
Modifiche all'API
- Stabilizza
ActivityEmbeddingRule
per supportare i test di unità relativi all'inserimento di attività. (I8d6b6) WindowMetrisCalculatorTestRule
è stabile e consente le metriche stub per i test JVM. Per risultati accurati, ti consigliamo di utilizzare un emulatore.- Stabilizzare le API di test per
WindowLayoutInfo
per supportare i test JVM. (Ie036e) - Aggiungi
IntRange
per i valori della funzionalità di piegatura del test. (I69f7d)
Versione 1.1
Versione 1.1.0
7 giugno 2023
androidx.window:window-*:1.1.0
viene rilasciato. La versione 1.1.0 contiene questi commit.
Modifiche importanti dalla versione 1.0.0
Incorporamento delle attività
- È stata aggiunta
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
come proprietà booleana del tag<application>
nel manifest dell'app. - È stata ritirata la metrica
isSplitSupported
e sostituita consplitSupportStatus
per fornire informazioni più dettagliate sul motivo per cui la funzionalità di suddivisione non è disponibile. - È stato aggiunto il tipo nidificato
SplitController.SplitSupportStatus
per fornire costanti di stato per la proprietàsplitSupportStatus
. - È stato eseguito il refactoring di
SplitController
in diversi moduli:- Modulo
ActivityEmbeddingController
per le API relative aActivity
oActivityStack
. - Elemento
isActivityEmbedded
spostato daSplitController
aActivityEmbeddingController
. - Modulo
RuleController
per le operazioni relative aEmbeddingRule
: - API rimosse:
SplitController
clearRegisteredRules()
getSplitRules()
initialize()
registerRule()
unregisterRule()
- API
RuleController
aggiunte: addRule()
: aggiunge o aggiorna una regola con lo stesso tag.removeRule()
: rimuove una regola dalla raccolta delle regole registrate.setRules()
: stabilisce una raccolta di regole.clearRules()
: rimuove tutte le regole registrate.parseRules()
: analizza le regole dalle definizioni delle regole XML.
- Modulo
- Tutti i moduli richiedono un contesto da inizializzare tramite il metodo
#getInstance()
, tra cui:ActivityEmbeddingController#getInstance(Context)
SplitController#getInstance(Context)
RuleController#getInstance(Context)
- È stata aggiunta la classe
EmbeddingAspectRatio
per definire costanti di comportamento simili a enum relative alle proporzioni dello schermo. - È stata aggiunta la classe
SplitAttributes
per definire il layout diviso. - Aggiunta di funzioni di calcolo
SplitAttributes
aSplitController
per personalizzare i layout suddivisi:setSplitAttributesCalculator(Function)
clearSplitAttributesCalculator()
isSplitAttributesCalculatorSupported()
per verificare se le APISplitAttributesCalculator
sono supportate sul dispositivo
- Campo
EmbeddingRule#tag
aggiunto. - Aggiornamenti dell'API nel mese di
SplitRule
:- È stato aggiunto
defaultSplitAttributes
: definisce il layout predefinito di una suddivisione e sostituiscesplitRatio
elayoutDirection
. - È stata aggiunta la traduzione delle proprietà XML
splitRatio
esplitLayoutDirection
indefaultSplitAttributes
. - Sono state modificate le definizioni delle dimensioni minime in modo da utilizzare i pixel indipendenti dalla densità (dp) anziché i pixel.
- È stato aggiunto
minHeightDp
con il valore predefinito 600dp. minWidth
modificato inminWidthDp
con valore predefinito 600dp.minSmallestWidth
modificato inminSmallestWidthDp
con valore predefinito 600dp.- È stato aggiunto
maxAspectRatioInHorizontal
con il valore predefinitoALWAYS_ALLOW
. - È stato aggiunto
maxAspectRatioInPortrait
con valore predefinito 1,4. - È stata definita la classe nidificata
FinishBehavior
per sostituire le costanti del comportamento di chiusura. - Sono state applicate le modifiche alle proprietà alla classe nidificata del costruttore di
SplitPairRule
eSplitPlaceholderRule
.
- È stato aggiunto
SplitInfo#getSplitRatio()
è stato sostituito conSplitInfo#getSplitAttributes()
per fornire ulteriori informazioni relative alla suddivisione.
WindowLayout
- È stato aggiunto il supporto sperimentale del contesto dell'interfaccia utente non correlato all'attività a
WindowInfoTracker
. - A
WindowMetricsCalculator
è stato aggiunto un contesto UI sperimentale non relativo all'attività.
Passaggi per la migrazione
- Per consentire l'inserimento di attività per visualizzarle nelle suddivisioni, le app devono aggiungere la proprietà
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
al tag<application>
del manifest:xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />
In questo modo, il sistema può ottimizzare in anticipo i comportamenti di suddivisione per un'applicazione. SplitInfo
ratio- Controlla se la suddivisione corrente è in pila:
kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
- Controlla il rapporto attuale:
kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
- Controlla se la suddivisione corrente è in pila:
- Migrazioni di SplitController:
SplitController.getInstance()
diventaSplitController.getInstance(Context)
.SplitController.initialize(Context, @ResId int)
diventaRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
.SplitController.getInstance().isActivityEmbedded(Activity)
diventaActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
.SplitController.getInstance().registerRule(rule)
diventaRuleController.getInstance(Context).addRule(rule)
.SplitController.getInstance().unregisterRule(rule)
diventaRuleController.getInstance(Context).removeRule(rule)
.SplitController.getInstance().clearRegisteredRules()
diventaRuleController.getInstance(Context).clearRules()
.SplitController.getInstance().getSplitRules()
diventaRuleController.getInstance(Context).getRules()
.
SplitRule
property migrations:minWidth
eminSmallestWidth
ora utilizzano unità dp anziché pixel. Le app possono utilizzare la seguente chiamata:kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )
o semplicemente dividereminWith
in pixel perdisplayMetrics#density
.
- È necessario eseguire la migrazione delle costanti di comportamento di completamento alle
FinishBehavior
costanti di classe simili a enum:FINISH_NEVER
diventaFinishBehavior.NEVER
.FINISH_ALWAYS
diventaFinishBehavior.ALWAYS
.FINISH_ADJACENT
diventaFinishBehavior.ADJACENT
.
- È necessario eseguire la migrazione della direzione del layout a
SplitAttributes.LayoutDirection
:ltr
diventaSplitAttributes.LayoutDirection.LEFT_TO_RIGHT
.rtl
diventaSplitAttributes.LayoutDirection.RIGHT_TO_LEFT
.locale
diventaSplitAttributes.LayoutDirection.LOCALE
.- È necessario eseguire la migrazione di
splitRatio
aSplitAttributes.SplitType.ratio(splitRatio)
.
SplitPairRule.Builder
migrations:SplitPairRule.Builder(filters, minWidth, minSmallestWidth)
diventakotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
setLayoutDirection(layoutDirection)
esetSplitRatio(ratio)
diventanokotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
setFinishPrimaryWithSecondary
esetFinishSecondaryWithPrimary
accettano le costanti simili a enumFinishBehavior
. Per maggiori dettagli, consulta "Migrazioni di SplitRule".- Usa
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
per mostrare le suddivisioni sui dispositivi in modalità Ritratto.
SplitPlaceholder.Builder
migrations:- Ha solo i parametri
filters
eplaceholderIntent
. Le altre proprietà passano ai setter. Per informazioni dettagliate, consulta "Migrazioni di SplitPairRule.Builder". setFinishPrimaryWithPlaceholder
prende le costanti simili a enumFinishBehavior
. Per maggiori dettagli, consulta "Migrazioni di SplitRule".setLayoutDirection(layoutDirection)
esetSplitRatio(ratio)
diventano:kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
- Usa
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
per mostrare le suddivisioni sui dispositivi in modalità Ritratto.
- Ha solo i parametri
Versione 1.1.0-rc01
10 maggio 2023
androidx.window:window-*:1.1.0-rc01
viene rilasciato. La versione 1.1.0-rc01 contiene questi commit.
Nuove funzionalità
- Rilascia
ActivityEmbedding
come API stabile. - Correzione di diversi bug.
Versione 1.1.0-beta02
5 aprile 2023
androidx.window:window-*:1.1.0-beta02
viene rilasciato. La versione 1.1.0-beta02 contiene questi commit.
Nuove funzionalità
- Correzioni interne e pulizia.
Versione 1.1.0-beta01
22 marzo 2023
androidx.window:window-*:1.1.0-beta01
viene rilasciato. La versione 1.1.0-beta01 contiene questi commit.
Incorporamento delle attività
- È stata aggiunta
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
come proprietà booleana del tag<application>
nel manifest dell'app. - È stata ritirata la metrica
isSplitSupported
e sostituita consplitSupportStatus
per fornire informazioni più dettagliate sul motivo per cui la funzionalità di suddivisione non è disponibile. - È stato aggiunto il tipo nidificato
SplitController.SplitSupportStatus
per fornire costanti di stato per la proprietàsplitSupportStatus
. - È stato eseguito il refactoring di
SplitController
in diversi moduli:- Modulo
ActivityEmbeddingController
per le API relative aActivity
oActivityStack
. - Elemento
isActivityEmbedded
spostato daSplitController
aActivityEmbeddingController
. - Modulo
RuleController
per le operazioni relative aEmbeddingRule
: - API
SplitController
rimosse:clearRegisteredRules()
getSplitRules()
initialize()
registerRule()
unregisterRule()
- Sono state aggiunte le API
RuleController
:addRule()
: aggiunge o aggiorna una regola con lo stesso tag.removeRule()
: rimuove una regola dalla raccolta delle regole registrate.setRules()
: stabilisce una raccolta di regole.clearRules()
: rimuove tutte le regole registrate.- "parseRules()": analizza le regole dalle definizioni delle regole XML.
- Modulo
- Tutti i moduli richiedono un contesto da inizializzare tramite il metodo
#getInstance()
, tra cui:ActivityEmbeddingController#getInstance(Context)
SplitController#getInstance(Context)
RuleController#getInstance(Context)
- È stata aggiunta la classe
EmbeddingAspectRatio
per definire costanti di comportamento simili a enum relative alle proporzioni dello schermo. - È stata aggiunta la classe
SplitAttributes
per definire il layout diviso. - Aggiunta di funzioni di calcolo
SplitAttributes
aSplitController
per personalizzare i layout suddivisi:setSplitAttributesCalculator(Function)
clearSplitAttributesCalculator()
isSplitAttributesCalculatorSupported()
per verificare se le API SplitAttributesCalculator sono supportate sul dispositivo
- Campo
EmbeddingRule#tag
aggiunto. - Aggiornamenti dell'API nel mese di
SplitRule
:- È stato aggiunto
defaultSplitAttributes
: definisce il layout predefinito di una suddivisione e sostituiscesplitRatio
elayoutDirection
. - È stata aggiunta la traduzione delle proprietà XML
splitRatio
esplitLayoutDirection
indefaultSplitAttributes
. - Sono state modificate le definizioni delle dimensioni minime in modo da utilizzare i pixel indipendenti dalla densità (dp) anziché i pixel.
- È stato aggiunto
minHeightDp
con il valore predefinito 600dp. minWidth
modificato inminWidthDp
con valore predefinito 600dp.minSmallestWidth
modificato inminSmallestWidthDp
con valore predefinito 600dp.- È stato aggiunto
maxAspectRatioInHorizontal
con il valore predefinitoALWAYS_ALLOW
. - È stato aggiunto
maxAspectRatioInPortrait
con il valore predefinito1.4
. - È stata definita la classe nidificata
FinishBehavior
per sostituire le costanti del comportamento di chiusura. - Le modifiche alle proprietà sono state applicate alla classe nidificata
Builder
diSplitPairRule
eSplitPlaceholderRule
.
- È stato aggiunto
SplitInfo#getSplitRatio()
è stato sostituito conSplitInfo#getSplitAttributes()
per fornire ulteriori informazioni relative alla suddivisione.
WindowLayout
- È stato aggiunto il supporto del contesto dell'interfaccia utente non correlato all'attività a
WindowInfoTracker
. - A
WindowMetricsCalculator
è stato aggiunto il contesto dell'interfaccia utente non relativo all'attività.
Passaggi per la migrazione
- Per consentire l'inserimento di attività per visualizzarle nelle suddivisioni, le app devono aggiungere la proprietà
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
al tag<application>
del manifest:xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />
In questo modo, il sistema può ottimizzare in anticipo i comportamenti di suddivisione per un'applicazione. SplitInfo
ratio- Controlla se la suddivisione corrente è in pila:
kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
- Controlla il rapporto attuale:
kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
- Controlla se la suddivisione corrente è in pila:
SplitController
migrations:SplitController.getInstance()
diventaSplitController.getInstance(Context)
.SplitController.initialize(Context, @ResId int)
diventaRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
.SplitController.getInstance().isActivityEmbedded(Activity)
diventaActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
.SplitController.getInstance().registerRule(rule)
diventaRuleController.getInstance(Context).addRule(rule)
.SplitController.getInstance().unregisterRule(rule)
diventaRuleController.getInstance(Context).removeRule(rule)
.SplitController.getInstance().clearRegisteredRules()
diventaRuleController.getInstance(Context).clearRules()
.SplitController.getInstance().getSplitRules()
diventaRuleController.getInstance(Context).getRules()
.
SplitRule
property migrations:minWidth
eminSmallestWidth
ora utilizzano unità dp anziché pixel. Le app possono utilizzare la seguente chiamata:kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )
o semplicemente dividereminWith
in pixel perdisplayMetrics#density
.
- È necessario eseguire la migrazione delle costanti di comportamento di completamento alle
FinishBehavior
costanti di classe simili a enum:FINISH_NEVER
diventaFinishBehavior.NEVER
.FINISH_ALWAYS
diventaFinishBehavior.ALWAYS
.FINISH_ADJACENT
diventaFinishBehavior.ADJACENT
.
- È necessario eseguire la migrazione della direzione del layout a
SplitAttributes.LayoutDirection
:ltr
diventaSplitAttributes.LayoutDirection.LEFT_TO_RIGHT
.rtl
diventaSplitAttributes.LayoutDirection.RIGHT_TO_LEFT
.locale
diventaSplitAttributes.LayoutDirection.LOCALE
.- È necessario eseguire la migrazione di
splitRatio
aSplitAttributes.SplitType.ratio(splitRatio)
.
SplitPairRule.Builder
migrations:SplitPairRule.Builder(filters, minWidth, minSmallestWidth)
diventakotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
setLayoutDirection(layoutDirection)
esetSplitRatio(ratio)
diventanokotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
setFinishPrimaryWithSecondary
esetFinishSecondaryWithPrimary
accettano le costanti simili a enumFinishBehavior
. Per maggiori dettagli, consulta "Migrazioni di SplitRule".- Usa
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
per mostrare le suddivisioni sui dispositivi in modalità Ritratto.
SplitPlaceholder.Builder
migrations:- Ha solo i parametri
filters
eplaceholderIntent
. Le altre proprietà passano ai setter. Per informazioni dettagliate, consulta "Migrazioni di SplitPairRule.Builder". setFinishPrimaryWithPlaceholder
prende le costanti simili a enumFinishBehavior
. Per maggiori dettagli, consulta "Migrazioni di SplitRule".setLayoutDirection(layoutDirection)
esetSplitRatio(ratio)
diventano:kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
- Usa
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
per mostrare le suddivisioni sui dispositivi in modalità Ritratto.
- Ha solo i parametri
Versione 1.1.0-alpha06
22 febbraio 2023
androidx.window:window-*:1.1.0-alpha06
viene rilasciato. La versione 1.1.0-alpha06 contiene questi commit.
Nuove funzionalità
- Esponi la versione sperimentale per ottenere
WindowLayoutInfo
da un contesto dell'interfaccia utente.
Modifiche all'API
- Aggiungi
splitSupportStatus
per indicare se l'inserimento di attività è disponibile. (I10024) - Rendi sperimentale l'API
WindowLayoutInfo
Contesto UI. (I58ee0) - Vengono introdotte le API
WindowAreaController
e per consentire alla modalitàRearDisplay
di spostare la finestra corrente sul display allineato alla fotocamera posteriore. (Iffcbf) - Aggiorna il colore di sfondo predefinito. (I1ac1b)
- Aggiungi i parametri
SplitAttributes
. (I18bdd) - Aggiungi le API per
SplitRule
,SplitAttributes
,SplitAttributesCalculator
. (I92d23) - Migliorare le API relative a
maxAspectRatio
:- Sostituisci
alwaysAllow()
ealwaysDisallow()
conALWAYS_ALLOW
eALWAYS_DISALLOW
. - Aggiorna la documentazione dell'API di @see con la documentazione autonoma. (I3057b)
- Sostituisci
- I seguenti costruttori vengono rimossi dalle API pubbliche perché non devono essere chiamati dalle app.
- Costruttore
SplitInfo
- Costruttore
ActivityStack
(Ide534)
- Costruttore
SplitRule
ora richiedemaxAspectRatioInPortrait/Landscape
. Consente la suddivisione delle attività solo quando il formato dei limiti principali è minore o uguale amaxAspectRatio
richiesto. (Ia5990)- Imposta
RuleController#parseRules
come statico (I785df) - Migliorare le API relative ad ActivityEmbedding
- Allinea la denominazione dell'API: utilizza add/remove per più istanze:
registerRule
diventaaddRule
unregisterRule
diventaremoveRule
- Sostituisci
getSplitRules
congetRules
poichéActivityRule
non è una regola di suddivisione - Aggiungi
RuleController#setRules
per impostare una serie di regole - Estrai le API relative alle regole da
SplitController
aRuleController
singleton. Sono: addRule
removeRule
getRules
setRules
clearRules
parseRules
- Estrai
#isActivityEmbedded
daSplitController
inActivityEmbeddingController
. Sono: isActivityEmbedded
- Rimuovi
SplitController#initialize
. Per impostare le regole dal file XML, utilizzaRuleController#parseRules
e#setRules
. Prima di questa modifica:SplitController.initialize(context, R.xml.static_rules)
Dopo questa modifica:val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
- Non distinguiamo più le regole statiche dalle regole di runtime. Detto questo, la chiamata a
#clearRules
comporta l'eliminazione di tutte le regole, indipendentemente dal fatto che siano registrate con definizioni di regole XML statiche o in fase di esecuzione. Per avere il comportamento precedente diSplitController#clearRegisteredRules
, chiamaRuleController#parseRules
con l'ID delle risorse XML e chiamaRuleController#setRules
per reimpostare le regole. Prima di questa modifica:SplitController.getInstance(context).clearRegisteredRules()
Dopo questa modifica:val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
(Ib3967)
- Migliorare le API SplitRule:
- Per
SplitRule
, utilizza le dimensioni minime in DP anziché in pixel. - Refactor per
SplitRule
Builder in modo che le dimensioni minime siano facoltative. (I95f17)
- Per
- Passare un contesto per inizializzare
SplitController
(I42549) SplitRule#layoutDir
è stato rinominato in#layoutDirection
eSplitRule Builder#setLayoutDir
inBuilder#setLayoutDirection
. (I3f6d1)
Versione 1.1.0-alpha04
9 novembre 2022
androidx.window:window-*:1.1.0-alpha04
viene rilasciato. La versione 1.1.0-alpha04 contiene questi commit.
Nuove funzionalità
- Esponi un metodo per determinare se un
ActivityStack
è vuoto perActivityEmbedding
. - Sono stati rimossi i tag API sperimentali dalle API
ActivityEmbedding
. - Nascondi il costruttore
ActivityRule
perchéBuilder
è il modo preferito per creare. - Aggiungi un metodo sperimentale per ottenere il
WindowInsets
suWindowMetrics
. - Aggiorna
SplitPlaceholderFinishBehavior
per evitare di completare il segnaposto. Il completamento del segnaposto ha causato un comportamento confuso.
Modifiche all'API
- Rendi pubblico val
isEmpty
per sostituire la funzioneisEmpty
. - Rinomina le attività dei parametri
ActivityStack
inactivitiesInProcess
. (Ia5055) - Rimuovi
ActivityFilter#matchesClassName
eActivityFilter#matchesClassNameOrWildCard
perché creano confusione. - Aggiungi
ActivityFilter#componentName
eActivityFilter#intentAction
per consentire all'utente che chiama di distinguere i diversi filtri (I41f22) - Rimuovi le API
@Deprecated
dall'API sperimentale (I216b3) - Rimuovere
@ExperimentalWindowApi
per le API di incorporamento delle attività (I69ebe) - Nascondi il costruttore
ActivityRule
, usa invece Builder. (If4eb6) - Aggiungi API per verificare se un'attività fa parte del
ActivityFilter
. (Ia43cf) - Aggiorna i file API per riflettere le modifiche alle classi
WindowMetrics
eWindowMetricsCalculatorCompat
(I667fe) - Aggiornare il Javadoc e il nome della classe della proprietà
ActivityEmbedding
(Ia1386) - Aggiunta di nomi di tag delle proprietà
ActivityEmbedding
da utilizzare in AndroidManifest.xml (Id1ad4) - Sono state aggiunte le nuove API
SplitPlaceholderFinishBehavior
eSplitPlaceholderRule.finishPrimaryWithPlaceholder
, che sostituiscono l'APISplitPlaceholderRule.finishPrimaryWithSecondary
esistente che definisce quando le attività segnaposto sono terminate e il comportamento delle attività associate nell'inserimento di attività. (I64647)
Correzioni di bug
- Vengono introdotte le API
WindowAreaController
e per consentire alla modalitàRearDisplay
di spostare la finestra corrente sul display allineato alla fotocamera posteriore. (I388ab)
Versione 1.1.0-alpha03
27 luglio 2022
androidx.window:window-*:1.1.0-alpha03
viene rilasciato. La versione 1.1.0-alpha03 contiene questi commit.
Nuove funzionalità
- Aggiorna i valori predefiniti per le regole di incorporamento.
Modifiche all'API
- Aggiorna i valori predefiniti per le proprietà delle regole di incorporamento. (Ic4d35)
Versione 1.1.0-alpha02
11 maggio 2022
androidx.window:window-*:1.1.0-alpha02
viene rilasciato. La versione 1.1.0-alpha02 contiene questi commit.
Nuove funzionalità
- Rilascia le librerie di adattamento per supportare Java e RxJava.
Versione 1.1.0-alpha01
11 maggio 2022
androidx.window:window-*:1.1.0-alpha01
viene rilasciato. La versione 1.1.0-alpha01 contiene questi commit.
Nuove funzionalità
- Rilasciare adattatori per supportare Java e RxJava
Versione 1.1.0-alpha01
20 aprile 2022
androidx.window:window:1.1.0-alpha01
viene rilasciato. La versione 1.1.0-alpha01 contiene questi commit.
Nuove funzionalità
- È stato corretto un bug per cui l'inserimento di un'app in background interrompe l'emissione delle funzionalità di piega.
- Espandere l'API sperimentale ActivityEmbedding.
Modifiche all'API
- Un'API pubblica per verificare se un'attività è incorporata. (I39eb7)
Correzioni di bug
- Aggiungi API che personalizzino il comportamento di completamento per i contenitori nelle suddivisioni delle attività (I1a1e4)
- È stata aggiunta una nuova opzione di configurazione per le regole di suddivisione delle attività. (Iec6af)
Versione 1.0
Versione 1.0.0
26 gennaio 2022
androidx.window:window-*:1.0.0
viene rilasciato. La versione 1.0.0 contiene questi commit.
Funzionalità principali della versione 1.0.0
- Supporto per smartphone pieghevoli fino alle versioni
WindowInfoTracker
eFoldingFeature
.WindowMetricsCalculator
per contribuire a calcolare i valori attuali di WindowMetrics.
Versione 1.0.0-rc01
15 dicembre 2021
androidx.window:window-*:1.0.0-rc01
viene rilasciato. La versione 1.0.0-rc01 contiene questi commit.
Nuove funzionalità
- Aggiungi il supporto per gli smartphone pieghevoli tramite
WindowInfoTracker
. - Aggiungi metodi per calcolare il valore
WindowMetrics
corrente e massimo. - Aggiungi API di test di supporto.
Versione 1.0.0-beta04
17 novembre 2021
androidx.window:window-*:1.0.0-beta04
viene rilasciato. La versione 1.0.0-beta04 contiene questi commit.
Nuove funzionalità
- Rinomina WindowInfoRepository in WindowInfoTracker.
- Rendi Activity una dipendenza di metodo esplicita per WindowInfoTracker.
- Aggiungi una semplice regola di test per WindowMetricsCalculator per supportare gli sviluppatori che utilizzano Robolectric.
Modifiche all'API
- Estensioni di estrazione (I25a5f)
- Aggiungi isEmpty in ActivityStack (I5a4e6)
- Rinomina WindowInfoRepository in WindowInfoTracker.
- Aggiorna le dipendenze java/rxjava/testing in modo che corrispondano. (I0da63)
- Aggiungi una regola di test per un semplice calcolatore di dati sulle finestre. (Ibacdb)
Versione 1.0.0-beta03
27 ottobre 2021
androidx.window:window-*:1.0.0-beta03
viene rilasciato. La versione 1.0.0-beta03 contiene questi commit.
Nuove funzionalità
- Aggiungi le API sperimentali di incorporamento delle attività. Questa versione iniziale del layout consente di mostrare due attività una accanto all'altra.
Modifiche all'API
- L'API currentWindowMetrics è stata rimossa perché non possiamo fornirla con precisione. Utilizza invece WindowMetricsCalculator (Icda5f)
- È stata aggiornata l'API Extensions. (Ica92b)
- È stata aggiunta un'interfaccia per una nuova funzionalità che consente di incorporare le attività e mostrarle una accanto all'altra nella finestra dell'attività principale. (I5711d)
- Sono stati nascosti i costruttori di WindowMetrics e WindowLayoutInfo. Utilizza invece le API di test. (I5a1b5)
- Aggiungi un'API per creare oggetti WindowLayoutInfo falsi. (I4a2fd)
Correzioni di bug
- Risolto un problema di perdita di memoria. (I3fc79, b/202989046)
Versione 1.0.0-beta02
1° settembre 2021
androidx.window:window-*:1.0.0-beta02
viene rilasciato. La versione 1.0.0-beta02 contiene questi commit.
Nuove funzionalità
- Aggiungi un'annotazione sperimentale per annotare le API sperimentali. (I9f1b6)
- Aggiungi un metodo di test per creare un FoldingFeature di test che accetti un Rect. In questo modo sarà più facile eseguire il test quando utilizzi Robolectric anziché un'attività effettiva. (Id1cca)
Versione 1.0.0-beta01
18 agosto 2021
androidx.window:window-*:1.0.0-beta01
viene rilasciato. La versione 1.0.0-beta01 contiene questi commit.
Nuove funzionalità
- Sono state rimosse le vecchie costanti e
FoldingFeature
è stata trasformata in un'interfaccia.
Modifiche all'API
- Rimuovi le vecchie costanti e rendi FoldFeature un'interfaccia. (I9a2d5)
Correzioni di bug
- Le librerie che dipendono dalla libreria
Test Core
sono state aggiornate alla versione1.4.0
e ora funzioneranno con la versione S della piattaforma Android. (I88b72, b/189353863)
Versione 1.0.0-alpha10
4 agosto 2021
androidx.window:window-*:1.0.0-alpha10
viene rilasciato. La versione 1.0.0-alpha10 contiene questi commit.
Nuove funzionalità
- Rinomina WindowInfoRepo in WindowInfoRepository e modifica le classi / i file corrispondenti.
- Converti le metriche della finestra corrente in un flusso in WindowInfoRepository poiché il valore cambia nel tempo.
- Rinomina WindowInfoRepoJavaAdapter in WindowInfoRepoCallbackAdapter
- Aggiungi un metodo di assistenza per creare oggetti FoldingFeature di test
- Aggiorna i pacchetti per raggruppare i corsi in base alla funzionalità supportata.
Modifiche all'API
- Rinomina ActivityExt in ActivityExtensions Passa da Repo a Repository. (I61a16)
- Aggiorna i pacchetti per i corsi. (I23ae2)
- Rimuovere WindowMetrics da WindowInfoRepo (I24663)
- Rimuovi WindowManager e utilizza WindowInfoRepo
- Rendi WindowBackend interno. (I06d9a)
- Converti le metriche della finestra in Flusso.
- Rinomina l'adattatore Java in WindowInfoRepoCallbackAdapter
- Rimuovi callbackFlow in modo che non vengano utilizzate altre API sperimentali. (Ia4d15)
- Aggiungi un metodo di assistenza per creare funzionalità di visualizzazione dei test.
- Passa da occlusionMode a occlusionType (If4cff)
Correzioni di bug
- È stato corretto un errore di ProGuard relativo alla rimozione della libreria di base.
- È stato corretto un errore per cui WindowLayoutInfo non veniva inviato ad altri iscritti.
- Risolto l'errore per cui le modifiche alla configurazione non attivavano gli aggiornamenti della funzionalità di piegatura.
Versione 1.0.0-alpha09
30 giugno 2021
androidx.window:window-*:1.0.0-alpha09
viene rilasciato. La versione 1.0.0-alpha09 contiene questi commit.
Nuove funzionalità
- Passa da costanti intere a enum senza limiti.
- Aggiungi un'utilità di test per creare funzionalità di piegatura dei test.
Modifiche all'API
- Aggiungi un metodo di assistenza per creare funzionalità di visualizzazione dei test. (I3cf54)
- Modifica da
occlusionMode
aocclusionType
.
- Modifica da
Correzioni di bug
- Emette il valore iniziale quando vengono aggiunti più consumatori degli stream di dati.
Versione 1.0.0-alpha08
16 giugno 2021
androidx.window:window-*:1.0.0-alpha08
viene rilasciato. La versione 1.0.0-alpha08 contiene questi commit.
Nuove funzionalità
- È stato rilasciato un artefatto di test per semplificare i test quando si utilizza WindowInfoRepository. Utilizza WindowInfoRepository per ottenere informazioni su DisplayFeatures e WindowMetrics. (I57f66, Ida620)
Versione 1.0.0-alpha07
2 giugno 2021
androidx.window:window-*:1.0.0-alpha07
viene rilasciato. La versione 1.0.0-alpha07 contiene questi commit.
Nuove funzionalità
- Esegui la migrazione della libreria di finestre di base a Kotlin. In futuro verranno utilizzate le coroutine e le funzioni di sospensione per esporre i dati asincroni.
- Aggiungi WindowInfoRepo come punto di interazione principale per ottenere WindowMetrics e lo stream di WindowLayoutInfo.
- Nuovo artefatto
window-java
per esporre API compatibili con Java per la registrazione e la disattivazione dei callback. - Nuovi elementi
window-rxjava2
ewindow-rxjava3
per esporre le API adattate a RxJava.
Modifiche all'API
- Aggiungi
WindowServices
per fornire le dipendenze in modo uniforme.- Aggiungi un'API basata su coroutine per utilizzare le informazioni sul layout della finestra. (Iab70f)
- Esegui la migrazione della libreria di gestione delle finestre di base a Kotlin. (Icca34)
Correzioni di bug
- Aggiungi una nuova classe di dati per rappresentare i limiti degli elementi. (I6dcd1)
Versione 1.0.0-alpha06
5 maggio 2021
androidx.window:window:1.0.0-alpha06
viene rilasciato. La versione 1.0.0-alpha06 contiene questi commit.
Nuove funzionalità
- Abbiamo iniziato la migrazione a Kotlin e la termineremo nella prossima release.
- DeviceState è stato rimosso dall'API pubblica. Utilizza FoldingFeature.
- Abbiamo rimosso
STATE_FLIPPED
dagli stati di FoldingFeature perché al momento non è supportato da nessun caso d'uso. - Abbiamo anche rimosso altre API ritirate.
Modifiche all'API
- Aggiunta di Kotlin come dipendenza.
- Esegui la migrazione della libreria di base a Kotlin. (Idd995)
- È stato rimosso il generatore
DisplayFeature
. (I61fa4) DeviceState
è stato rimosso dall'API pubblica. UtilizzaFoldingFeature
. (Id6079)- Rimuovi il callback dello stato del dispositivo dalle estensioni. (I5ea83)
- Rimuovi
STATE_FLIPPED
da FoldingFeature. (I9c4e1) - Rimuovi i metodi di registrazione non più supportati. (Ib381b)
Versione 1.0.0-alpha05
24 marzo 2021
androidx.window:window:1.0.0-alpha05
viene rilasciato. La versione 1.0.0-alpha05 contiene questi commit.
Nuove funzionalità
Abbiamo aggiunto metodi di utilità a FoldingFeature in modo che le app possano capire se la funzionalità si sta separando, occludendo e determinare l'orientamento della cerniera. Nascondiamo anche il tipo di cerniera in modo che
Stiamo rimuovendo i metodi di lettura sincrona da WindowManager. I metodi di lettura sincrona sono soggetti a errori perché esiste una condizione di gara implicita. Registra ascoltatori e callback per ricevere aggiornamenti su WindowLayoutInfo.
Modifiche all'API
- Aggiungere metodi di utilità per lavorare con FoldingFeatures (Ie733f)
- Rimuove i metodi di lettura sincrona da WindowManager (I96fd4)
Versione 1.0.0-alpha04
10 marzo 2021
androidx.window:window:1.0.0-alpha04
viene rilasciato. La versione 1.0.0-alpha04 contiene questi commit.
Nuove funzionalità
- È stato corretto un bug per cui non viene emesso alcun WindowLayoutInfo se non è presente un'implementazione OEM. Ora emettiamo un WIndowLayoutInfo vuoto.
- È stato corretto un bug per cui lo stato non veniva aggiornato correttamente se lo stato della cerniera cambiava mentre l'app era in background. Ora lo stato dovrebbe essere coerente.
- Aggiorna i file ProGuard per ignorare gli avvisi delle dipendenze di runtime.
Correzioni di bug
- Emette un valore vuoto quando la raccolta OEM non è presente. (Ide935)
Versione 1.0.0-alpha03
18 febbraio 2021
androidx.window:window:1.0.0-alpha03
viene rilasciato. La versione 1.0.0-alpha03 contiene questi commit.
Nuove funzionalità
- Emettere un valore vuoto per WindowLayoutInfo quando l'implementazione OEM è vuota. In questo modo sarà più facile utilizzare la libreria su più dispositivi. Poiché le API sono asincrone, è comunque consigliabile che le app scrivano del codice difensivo ed emettano un valore predefinito dopo un timeout. Non abbiamo garanzie sulle implementazioni OEM e il valore iniziale potrebbe essere in ritardo.
Correzioni di bug
- Emette un valore vuoto quando la raccolta OEM non è presente. (Ide935)
Versione 1.0.0-alpha02
27 gennaio 2021
androidx.window:window:1.0.0-alpha02
viene rilasciato. La versione 1.0.0-alpha02 contiene questi commit.
Nuove funzionalità
Abbiamo ritirato alcune API per semplificarle e ridurre gli errori. Alcuni esempi degni di nota sono la rimozione delle operazioni di lettura sincrone da WindowManager e il ritiro di DeviceState. Le operazioni di lettura sincrone possono portare a condizioni di gara e avere un'interfaccia utente errata.
Abbiamo convertito DisplayFeature in un'interfaccia che verrà implementata da altre funzionalità in futuro. La nostra prima funzionalità è FoldingFeature, che ora rappresenta la piega dello schermo o la cerniera. Contiene anche lo stato della cerniera che sostituisce DeviceState.
WindowMetrics è stato introdotto in Android 11 per fornire agli sviluppatori un modo semplice per eseguire query sulle metriche di una finestra, ad esempio la sua posizione e le sue dimensioni sullo schermo e eventuali inserimenti di sistema. Abbiamo eseguito il backport dell'API in questa release in modo che gli sviluppatori possano sfruttare WindowMetrics e continuare a supportare le versioni precedenti di Android. WindowMetrics può essere ottenuto tramite le API
WindowManager#getCurrentWindowMetrics()
e WindowManager#getMaximumWindowMetrics().
Modifiche all'API
- API ritirate che verranno rimosse nella prossima versione alpha (Ib7cc4)
- Aggiorna
ExtensionInterface
per accettare riferimenti espliciti alle attività. (I07ded) - Introduce l'API WindowMetrics. (I3ccee)
- Rimuovere i metodi di lettura sincrona da WindowManager (I69983)
- Rendi protetto il pacchetto ExtensionWindowBackend. (Ied208)
Correzioni di bug
- Aggiorna le API
ExtensionInterface
in modo che accettino contesti visivi. (I8e827)
Contributo esterno
- Unisci DeviceState e WindowLayoutInfo per accedere più facilmente ai dati. (Id34f4)
Versione 1.0.0-alpha01
27 febbraio 2020
androidx.window:window:1.0.0-alpha01
e androidx.window:window-extensions:1.0.0-alpha01
vengono rilasciati. La versione 1.0.0-alpha01 contiene questi commit.
Questa è la prima release della libreria Window Manager.
Nuove funzionalità
DisplayFeature
: questa nuova API identifica le interruzioni nelle superfici continue dello schermo piatto, ad esempio cerniere o piegheDeviceState
: questa nuova API fornisce la posizione corrente dello smartphone da un elenco di posizioni definite (ad esempioCLOSED
,OPENED
,HALF_OPENED
e così via).