Gestore finestre
Aggiornamento più recente | Release stabile | Candidato per la release | Versione beta | Release alpha |
---|---|---|---|---|
29 maggio 2024 | 1.3.0 | - | - | - |
Dichiarazione delle dipendenze
Per aggiungere una dipendenza a 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 artefatti necessari nel file build.gradle
per
l'app o il modulo:
Groovy
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 rilevi nuovi problemi o hai idee per migliorare la libreria. Dai un'occhiata ai problemi esistenti in questa libreria prima di crearne una nuova. Puoi aggiungere il tuo voto a un problema esistente facendo clic sul pulsante a forma di stella.
Per ulteriori informazioni, consulta la documentazione di Issue Tracker.
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 multipiattaforma Kotlin per classi di dimensioni delle finestre.
Versione 1.3.0-rc01
14 maggio 2024
WindowManager
Jetpack 1.3 offre il supporto di Kotlin Multiplatform per le funzionalità WindowSizeClass
e 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 alle API
- Rimuovi il supporto per la creazione e l'utilizzo di
WindowSizeClass
personalizzati. (Id1143)
Correzioni di bug
- Corregge
KotlinReflectionInternalError
causato dalla rimozione di alcuni file da parte di Proguard su determinate implementazioni del dispositivo. (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 alle 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 eseguito correttamente sull'unwrapping. (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 alla superficie API dell'API Window size Class per migliorare la flessibilità degli sviluppatori che vogliono utilizzare le proprie classi di dimensioni.
Modifiche alle API
- Aggiungi vincoli di altezza al selettore della larghezza. (I23393)
- Aggiungi funzioni di utilità per scegliere un
WindowSizeClass
da un insieme. Aggiungere funzioni sperimentali di punteggio in modo che gli sviluppatori possano scrivere i propri selettori. Aggiungi una funzione di estensione del selettore per scegliere il valoreWindowSizeClass
più ampio in un determinato limite. (I0c944) - Apri il costruttore
WindowSizeClass
per aggiungere punti di interruzione personalizzati. (Ic1ff3) - Aggiungi una funzione di convenienza per creare una classe di dimensioni da larghezza, altezza e densità. (If67f4)
Correzioni di bug
- Correggi 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à
- Esporre le API sperimentali delle finestre 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 l'override quando si ottiene un valore daUiContext
.WindowInfoTracker
segnala il piegamento dei dati delle funzionalità aUiContext
parametri.- Esponi la versione delle estensioni sul dispositivo.
WindowProperties
costanti per gli override per app per utente:PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
: informa il sistema che l'app ha disattivato l'override della compatibilità delle proporzioni rivolte agli utenti.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE
: informa il sistema che l'app ha disattivato l'opzione a schermo intero delle impostazioni di sostituzione della compatibilità delle proporzioni 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
- Esporre le API sperimentali delle finestre 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 l'override quando si ottiene un valore daUiContext
.WindowInfoTracker
segnala il piegamento dei dati delle funzionalità aUiContext
parametri.- 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à
- Esporre le API sperimentali delle finestre 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 l'override quando si ottiene un valore daUiContext
.WindowInfoTracker
segnala il piegamento dei dati delle funzionalità aUiContext
parametri.- 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 alle 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
RequiresApi
controlli di API che richiedono una versione specifica delle estensioni per funzionare correttamente. - Aggiungi un'API per esporre la versione delle estensioni sul dispositivo.
Modifiche alle API
- Annota la versione dell'estensione dell'SDK della finestra richiesta sulle API pubbliche.
- Rimuovi
isXXXSupported
nel componente di incorporamento delle attività. (Ie3dae)
- Rimuovi
- Presenta
WindowSdkExtensions
per segnalare la versione dell'estensione sul dispositivo.- Presenta
RequiresWindowSdkExtension
per annotare la versione minima dell'estensione richiesta. (I05fd4)
- Presenta
- Rende
WindowAreaInfo#getCapability
come non nullo. (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à
- Esporre le API sperimentali delle finestre 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 l'override quando si ottiene un valore daUiContext
.WindowInfoTracker
segnala il piegamento dei dati delle funzionalità aUiContext
parametri.
Modifiche alle API
- Contrassegna le API di
WindowArea
come sperimentali per consentire il proseguimento delle modifiche all'API per una release stabile in 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 deprecate dalla piattaforma API.
- Aggiungi API per supportare le visualizzazioni simultanee.
- Aggiungi una proprietà per disattivare l'override del ridimensionamento forzato.
- Aggiungi la proprietà per disattivare la sostituzione minima delle proporzioni.
- Stabilizza
ActivityEmbeddingRule
per supportare il test delle unità intorno all'incorporamento delle attività.
Modifiche alle API
Correzioni di bug
- Aggiunta della proprietà compat di disattivazione per l'override del ridimensionamento forzato (Ie7ab1)
- Rimuove
SESSION_STATE_CONTENT_INVISIBLE
dall'interfaccia delle estensioni. (I6ed19) - Stabilizza
ActivityEmbeddingRule
per supportare il test delle unità intorno all'incorporamento delle attività. (I8d6b6). - Aggiunta della proprietà compat di disattivazione per la sostituzione minima delle proporzioni. (I66390)
- Rimuove l'API WindowArea ritirata (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 delle sessioni dell'area della finestra (I83675)
- Aggiunta di una proprietà di compatibilità di disattivazione che ignora il loop della richiesta di orientamento quando viene rilevata (I0a7a2)
- Aggiungi
WindowAreaComponent#STATUS_ACTIVE
per indicare che la funzionalità è già attiva. (I62bc3). - Aggiungi API
RearDisplayPresentationMode
(I0401c) - Rimuovi l'API del colore di sfondo per una versione stabile. (I34c3e).
- Nascondi API area finestra. (I39de0)
- Aggiungi metodi per eseguire l'override di
SplitInfo
inSplitController
. Aggiungi metodi di test per creare doppio perSplitInfo
eActivityStack
. (Icd69f) - Rendi facoltativo il tag per
ActivityRule.Builder
. (Ib0b44) - Rimuovi
RatioSplitType
,ExpandContainersSplit
eHingeSplitType
. Ora èSplitType
.- Sostituisci
#splitEqually()
,#expandContainers()
e#splitByHinge
alle costantiSplitType SPLIT_TYPE_EQUAL
,SPLIT_TYPE_EXPAND
eSPLIT_TYPE_HINGE
- Rimuovi la funzionalità per impostare il tipo di riserva del tipo di suddivisione cerniera. Se il tipo di suddivisione della cerniera non può essere applicato a causa dello stato attuale del dispositivo o della finestra, utilizza gli elementi di riserva per suddividere equamente il contenitore delle attività principale. Utilizza
SplitController#setSplitAttributesCalculator
per personalizzare il tipo di suddivisione di riserva. (Ifcc59)
- Sostituisci
- Ritira
add
/removeSplitCallback
- Sposta
add
/removeSplitCallback
inSplitControllerCallbackAdapter
- Aggiungi l'assistenza
Flow
per ottenere l'elencoSplitInfo
(I7f1b6)
- Sposta
- Aggiungi una regola di test per
ActivityEmbeddingController
(I42e9b) - Ridenominazione di
ActivityOptionsCompat
inActivityEmbeddingOptions
(I89301) - Aggiungi
splitSupportStatus
per indicare se è disponibile l'incorporamento dell'attività. (I10024) - Presenta
SplitAttributes.BackgroundColor
per rappresentare meglio il valoreDEFAULT
. Chiarisci che il colore di sfondo dell'animazione non opaco non è supportato, pertanto i colori non opachi verranno trattati come predefiniti, ovvero verrà utilizzato il colore di sfondo della finestra del tema corrente. (Ic6b95) - Sostituisci
alwaysAllow()
ealwaysDisallow()
conALWAYS_ALLOW
eALWAYS_DISALLOW
. (I3057b) - Aggiungi API per
SplitRule
,SplitAttributes
eSplitAttributesCalculator
. (I92d23) - Aggiungi
TestActivityStack
per creareActivityStack
per i test- Aggiungi
TestSplitInfo
per creareSplitInfo
per i test. (I8e779)
- Aggiungi
- Aggiungi un modo per creare una
SplitAttributesCalculatorParams
falsa 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 folding non specificate.
- Se esegui l'override di
WindowLayoutInfoPublishRule
, verranno sostituiti tutti i valori diwindowLayoutInfo
, inclusa l'API basata sul contesto.
Modifiche alle API
- Aggiungi una costante per una funzionalità di piegatura centrale non specificata. (I7530c)
Correzioni di bug
- Aggiorna
WindowLayoutInfoPublishRule
per supportare l'override suContext
in base aWindowLayoutInfo
. (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à
Stabilizza le API di test relative all'incorporamento delle attività e all'WindowLayoutInfoTracker
. ActivityEmbeddingRule
è stato promosso alla versione stabile.
WindowMetricsCalculatorRule
è stato promosso alla versione stabile.
Le funzioni di utilità per creare un FoldingFeature
per il test sono state promosse alla versione stabile.
Modifiche alle API
- Stabilizza
ActivityEmbeddingRule
per supportare il test delle unità intorno all'incorporamento delle attività. (I8d6b6). WindowMetrisCalculatorTestRule
consente metriche stub in modo stabile per i test JVM. Ti consigliamo di utilizzare un emulatore per ottenere risultati precisi.- Stabilizza le API di test per
WindowLayoutInfo
al fine di supportare i test JVM. (Ie036e). - Aggiungi
IntRange
per testare i valori delle funzionalità di piegatura. (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à
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
aggiunta come proprietà booleana del tag<application>
nel file manifest dell'app.isSplitSupported
ritirata e sostituita consplitSupportStatus
per fornire informazioni più dettagliate sul motivo per cui la funzionalità di suddivisione non è disponibile.- È stata aggiunta la classe nidificata
SplitController.SplitSupportStatus
per fornire le costanti di stato per la proprietàsplitSupportStatus
. - Refactoring di
SplitController
in diversi moduli:- Modulo
ActivityEmbeddingController
per le API correlate aActivity
oActivityStack
. - Elemento
isActivityEmbedded
spostato daSplitController
aActivityEmbeddingController
. - Modulo
RuleController
per le operazioni correlate aEmbeddingRule
: - API
SplitController
rimosse: clearRegisteredRules()
getSplitRules()
initialize()
registerRule()
unregisterRule()
- API
RuleController
aggiunte: addRule()
: aggiunge una regola o aggiorna la regola che ha lo stesso tag.removeRule()
: rimuove una regola dalla raccolta di regole registrate.setRules()
: stabilisce una raccolta di regole.clearRules()
: rimuove tutte le regole registrate.parseRules()
: analizza le regole delle definizioni delle regole XML.
- Modulo
- Tutti i moduli richiedono che un contesto venga inizializzato dal metodo
#getInstance()
, tra cui:ActivityEmbeddingController#getInstance(Context)
SplitController#getInstance(Context)
RuleController#getInstance(Context)
- È stata aggiunta la classe
EmbeddingAspectRatio
per definire le costanti di comportamento simili a enum relative alle proporzioni del display. - È stata aggiunta la classe
SplitAttributes
per definire il layout diviso. - Sono state aggiunte
SplitAttributes
funzioni della calcolatrice 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 in
SplitRule
:- Aggiunto
defaultSplitAttributes
: definisce il layout di suddivisione predefinito di una suddivisione; sostituiscesplitRatio
elayoutDirection
. - È stata aggiunta la traduzione delle proprietà XML
splitRatio
esplitLayoutDirection
indefaultSplitAttributes
. - Definizioni delle dimensioni minime modificate in modo da utilizzare i pixel indipendenti dalla densità (dp) anziché i pixel.
- È stato aggiunto
minHeightDp
con valore predefinito di 600 dp. - Il valore
minWidth
è stato modificato inminWidthDp
con valore predefinito 600 dp. - Il valore
minSmallestWidth
è stato modificato inminSmallestWidthDp
con valore predefinito 600 dp. - È stato aggiunto
maxAspectRatioInHorizontal
con valore predefinitoALWAYS_ALLOW
. - È stato aggiunto
maxAspectRatioInPortrait
con valore predefinito 1.4. - Classe nidificata
FinishBehavior
definita per sostituire le costanti di comportamento di fine. - Sono state applicate le modifiche alla proprietà alla classe nidificata del builder di
SplitPairRule
eSplitPlaceholderRule
.
- Aggiunto
- È stato sostituito
SplitInfo#getSplitRatio()
conSplitInfo#getSplitAttributes()
per fornire ulteriori informazioni relative alla suddivisione.
Layoutfinestra
- È stato aggiunto il supporto sperimentale del contesto UI non attività a
WindowInfoTracker
. - Il contesto dell'interfaccia utente sperimentale non relativo alle attività è stato aggiunto a
WindowMetricsCalculator
.
Passaggi per la migrazione
- Per attivare l'incorporamento delle attività per visualizzare le attività in segmenti, le app devono aggiungere la proprietà
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
al tag manifest<application>
: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. - Rapporto tra
SplitInfo
- Controlla se la suddivisione attuale è 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 attuale è in pila:
- Migrazioni di SplitController:
SplitController.getInstance()
passa aSplitController.getInstance(Context)
.SplitController.initialize(Context, @ResId int)
passa aRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
.SplitController.getInstance().isActivityEmbedded(Activity)
passa aActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
.SplitController.getInstance().registerRule(rule)
passa aRuleController.getInstance(Context).addRule(rule)
.SplitController.getInstance().unregisterRule(rule)
passa aRuleController.getInstance(Context).removeRule(rule)
.SplitController.getInstance().clearRegisteredRules()
passa aRuleController.getInstance(Context).clearRules()
.SplitController.getInstance().getSplitRules()
passa aRuleController.getInstance(Context).getRules()
.
SplitRule
migrazioni delle proprietà: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 in
FinishBehavior
costanti di classe simili a enum:FINISH_NEVER
passa aFinishBehavior.NEVER
.FINISH_ALWAYS
passa aFinishBehavior.ALWAYS
.FINISH_ADJACENT
passa aFinishBehavior.ADJACENT
.
- Devi eseguire la migrazione della direzione del layout a
SplitAttributes.LayoutDirection
:ltr
passa aSplitAttributes.LayoutDirection.LEFT_TO_RIGHT
.rtl
passa aSplitAttributes.LayoutDirection.RIGHT_TO_LEFT
.locale
passa aSplitAttributes.LayoutDirection.LOCALE
.- È necessario eseguire la migrazione di
splitRatio
aSplitAttributes.SplitType.ratio(splitRatio)
.
SplitPairRule.Builder
migrazioni:SplitPairRule.Builder(filters, minWidth, minSmallestWidth)
cambia inkotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
setLayoutDirection(layoutDirection)
esetSplitRatio(ratio)
cambiano inkotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
setFinishPrimaryWithSecondary
esetFinishSecondaryWithPrimary
prendono le costanti simili a enumFinishBehavior
. Per maggiori dettagli, vedi "Migrazioni SplitRule".- Usa
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
per mostrare le suddivisioni sui dispositivi verticali.
SplitPlaceholder.Builder
migrazioni:- Ha solo i parametri
filters
eplaceholderIntent
. Altre proprietà vengono trasferite all'impostazione. Per i dettagli, vedi "Migrazioni SplitPairRule.Builder". setFinishPrimaryWithPlaceholder
prende le costanti simili all'enumerazioneFinishBehavior
. Per maggiori dettagli, vedi "Migrazioni 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 verticali.
- 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. - Varie correzioni di 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à
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
aggiunta come proprietà booleana del tag<application>
nel file manifest dell'app.isSplitSupported
ritirata e sostituita consplitSupportStatus
per fornire informazioni più dettagliate sul motivo per cui la funzionalità di suddivisione non è disponibile.- È stata aggiunta la classe nidificata
SplitController.SplitSupportStatus
per fornire le costanti di stato per la proprietàsplitSupportStatus
. - Refactoring di
SplitController
in diversi moduli:- Modulo
ActivityEmbeddingController
per le API correlate aActivity
oActivityStack
. - Elemento
isActivityEmbedded
spostato daSplitController
aActivityEmbeddingController
. - Modulo
RuleController
per le operazioni correlate aEmbeddingRule
: - API
SplitController
rimosse:clearRegisteredRules()
getSplitRules()
initialize()
registerRule()
unregisterRule()
- API
RuleController
aggiunte:addRule()
: aggiunge una regola o aggiorna la regola che ha lo stesso tag.removeRule()
: rimuove una regola dalla raccolta di regole registrate.setRules()
: stabilisce una raccolta di regole.clearRules()
: rimuove tutte le regole registrate.- "parseRules() - Analizza le regole delle definizioni delle regole XML.
- Modulo
- Tutti i moduli richiedono che un contesto venga inizializzato dal metodo
#getInstance()
, tra cui:ActivityEmbeddingController#getInstance(Context)
SplitController#getInstance(Context)
RuleController#getInstance(Context)
- È stata aggiunta la classe
EmbeddingAspectRatio
per definire le costanti di comportamento simili a enum relative alle proporzioni del display. - È stata aggiunta la classe
SplitAttributes
per definire il layout diviso. - Sono state aggiunte
SplitAttributes
funzioni della calcolatrice 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 in
SplitRule
:- Aggiunto
defaultSplitAttributes
: definisce il layout di suddivisione predefinito di una suddivisione; sostituiscesplitRatio
elayoutDirection
. - È stata aggiunta la traduzione delle proprietà XML
splitRatio
esplitLayoutDirection
indefaultSplitAttributes
. - Definizioni delle dimensioni minime modificate in modo da utilizzare i pixel indipendenti dalla densità (dp) anziché i pixel.
- È stato aggiunto
minHeightDp
con valore predefinito di 600 dp. - Il valore
minWidth
è stato modificato inminWidthDp
con valore predefinito 600 dp. - Il valore
minSmallestWidth
è stato modificato inminSmallestWidthDp
con valore predefinito 600 dp. - È stato aggiunto
maxAspectRatioInHorizontal
con valore predefinitoALWAYS_ALLOW
. - È stato aggiunto
maxAspectRatioInPortrait
con valore predefinito1.4
. - Classe nidificata
FinishBehavior
definita per sostituire le costanti di comportamento di fine. - Le modifiche alla proprietà sono state applicate alla classe nidificata
Builder
diSplitPairRule
eSplitPlaceholderRule
.
- Aggiunto
- È stato sostituito
SplitInfo#getSplitRatio()
conSplitInfo#getSplitAttributes()
per fornire ulteriori informazioni relative alla suddivisione.
Layoutfinestra
- Aggiunto il supporto del contesto UI non attività a
WindowInfoTracker
. - Il contesto UI non relativo alle attività è stato aggiunto a
WindowMetricsCalculator
.
Passaggi per la migrazione
- Per attivare l'incorporamento delle attività per visualizzare le attività in segmenti, le app devono aggiungere la proprietà
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
al tag manifest<application>
: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. - Rapporto tra
SplitInfo
- Controlla se la suddivisione attuale è 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 attuale è in pila:
SplitController
migrazioni:SplitController.getInstance()
passa aSplitController.getInstance(Context)
.SplitController.initialize(Context, @ResId int)
passa aRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int))
.SplitController.getInstance().isActivityEmbedded(Activity)
passa aActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity)
.SplitController.getInstance().registerRule(rule)
passa aRuleController.getInstance(Context).addRule(rule)
.SplitController.getInstance().unregisterRule(rule)
passa aRuleController.getInstance(Context).removeRule(rule)
.SplitController.getInstance().clearRegisteredRules()
passa aRuleController.getInstance(Context).clearRules()
.SplitController.getInstance().getSplitRules()
passa aRuleController.getInstance(Context).getRules()
.
SplitRule
migrazioni delle proprietà: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 in
FinishBehavior
costanti di classe simili a enum:FINISH_NEVER
passa aFinishBehavior.NEVER
.FINISH_ALWAYS
passa aFinishBehavior.ALWAYS
.FINISH_ADJACENT
passa aFinishBehavior.ADJACENT
.
- Devi eseguire la migrazione della direzione del layout a
SplitAttributes.LayoutDirection
:ltr
passa aSplitAttributes.LayoutDirection.LEFT_TO_RIGHT
.rtl
passa aSplitAttributes.LayoutDirection.RIGHT_TO_LEFT
.locale
passa aSplitAttributes.LayoutDirection.LOCALE
.- È necessario eseguire la migrazione di
splitRatio
aSplitAttributes.SplitType.ratio(splitRatio)
.
SplitPairRule.Builder
migrazioni:SplitPairRule.Builder(filters, minWidth, minSmallestWidth)
cambia inkotlin 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
prendono le costanti simili a enumFinishBehavior
. Per maggiori dettagli, vedi "Migrazioni SplitRule".- Usa
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)
per mostrare le suddivisioni sui dispositivi verticali.
SplitPlaceholder.Builder
migrazioni:- Ha solo i parametri
filters
eplaceholderIntent
. Altre proprietà vengono trasferite all'impostazione. Per i dettagli, vedi "Migrazioni SplitPairRule.Builder". setFinishPrimaryWithPlaceholder
prende le costanti simili all'enumerazioneFinishBehavior
. Per maggiori dettagli, vedi "Migrazioni 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 verticali.
- 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 del recupero di
WindowLayoutInfo
da un contesto dell'interfaccia utente.
Modifiche alle API
- Aggiungi
splitSupportStatus
per indicare se è disponibile l'incorporamento dell'attività. (I10024) - Imposta l'API Contesto della UI
WindowLayoutInfo
come sperimentale. (I58ee0) - Introduce l'
WindowAreaController
e le API per attivare la modalitàRearDisplay
per spostare la finestra corrente sul display allineato con la fotocamera posteriore. (Iffcbf) - Aggiorna il colore di sfondo predefinito. (I1ac1b).
- Aggiungi
SplitAttributes
parametri. (I18bdd) - Aggiungi API per
SplitRule
,SplitAttributes
eSplitAttributesCalculator
. (I92d23) - Migliora le API relative a
maxAspectRatio
:- Sostituisci
alwaysAllow()
ealwaysDisallow()
conALWAYS_ALLOW
eALWAYS_DISALLOW
. - Aggiorna la documentazione dell'API @see con la documentazione autonoma. (I3057b)
- Sostituisci
- I seguenti costruttori vengono rimossi dalle API pubbliche perché non dovrebbero essere chiamati dalle app.
- Costruttore
SplitInfo
- Costruttore
ActivityStack
(Ide534)
- Costruttore
SplitRule
ora richiedemaxAspectRatioInPortrait/Landscape
. Consente la suddivisione delle attività solo quando le proporzioni dei limiti principali sono inferiori o uguali al valoremaxAspectRatio
richiesto. (Ia5990)- Modifica
RuleController#parseRules
in modo che sia statico (I785df) - Migliora le API relative a ActivityEmbedding
- Allinea la denominazione delle API. Utilizza add/remove per più istanze:
registerRule
modifiche aaddRule
unregisterRule
modifiche aremoveRule
- Sostituisci
getSplitRules
congetRules
poichéActivityRule
non è una regola di suddivisione - Aggiungi
RuleController#setRules
per impostare una serie di regole - Estrai le API correlate alla regola da
SplitController
a singletonRuleController
. Sono: addRule
removeRule
getRules
setRules
clearRules
parseRules
- Estrai
#isActivityEmbedded
daSplitController
nel singletonActivityEmbeddingController
. Sono: isActivityEmbedded
- Rimuovi
SplitController#initialize
. Per impostare regole da un file XML, utilizzaRuleController#parseRules
e#setRules
. Prima della modifica:SplitController.initialize(context, R.xml.static_rules)
Dopo la modifica:val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
- Non distinguiamo più le regole statiche con le regole di runtime. Detto questo, la chiamata dei risultati di
#clearRules
per cancellare tutte le regole, indipendentemente dal fatto che siano registrate con definizioni delle regole XML statiche o in fase di runtime. Per mantenere il comportamento precedente diSplitController#clearRegisteredRules
, chiamaRuleController#parseRules
con l'ID risorsa XML e chiamaRuleController#setRules
per reimpostare le regole. Prima della modifica:SplitController.getInstance(context).clearRegisteredRules()
Dopo la modifica:val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
(Ib3967)
- Migliora le API SplitRule:
- Utilizza le dimensioni minime in DP anziché i pixel per
SplitRule
. - Esegui il refactoring per il builder di
SplitRule
in modo che le dimensioni minime siano facoltative. (I95f17)
- Utilizza le dimensioni minime in DP anziché i pixel per
- Passa un contesto per inizializzare
SplitController
(I42549) - Rinominato
SplitRule#layoutDir
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 valore
ActivityStack
è vuoto perActivityEmbedding
. - Sono stati rimossi i tag API sperimentali dalle API di
ActivityEmbedding
. - Nascondi il costruttore
ActivityRule
poichéBuilder
è il modo migliore per costruire. - Aggiungi un metodo sperimentale per scaricare
WindowInsets
suWindowMetrics
. - Aggiorna
SplitPlaceholderFinishBehavior
per impedire il completamento del segnaposto. La fine del segnaposto ha creato comportamenti poco chiari.
Modifiche alle API
- Rendi pubblico il valore
isEmpty
per sostituire il divertenteisEmpty
. - Rinomina le attività parametro
ActivityStack
inactivitiesInProcess
. (Ia5055) - Rimuovi
ActivityFilter#matchesClassName
eActivityFilter#matchesClassNameOrWildCard
perché sono poco chiari. - Aggiungi
ActivityFilter#componentName
eActivityFilter#intentAction
per consentire al chiamante di distinguere filtri diversi (I41f22) - Rimuovi le API
@Deprecated
dall'API sperimentale (I216b3) - Rimuovi
@ExperimentalWindowApi
per le API di incorporamento delle attività (I69ebe) - Nascondi il costruttore
ActivityRule
, utilizza invece Builder. (If4eb6). - Aggiungi le API per verificare se un'attività fa parte di
ActivityFilter
. (Ia43cf) - Aggiorna i file API per riflettere le modifiche nelle classi
WindowMetrics
eWindowMetricsCalculatorCompat
(I667fe) - Aggiorna il Javadoc della proprietà
ActivityEmbedding
e il nome della classe (Ia1386) - Aggiunta di nomi dei tag della proprietà
ActivityEmbedding
da utilizzare nel file AndroidManifest.xml (Id1ad4) - Sono state aggiunte le nuove API
SplitPlaceholderFinishBehavior
eSplitPlaceholderRule.finishPrimaryWithPlaceholder
, che sostituisce laSplitPlaceholderRule.finishPrimaryWithSecondary
esistente, che definisce quando vengono terminate le attività segnaposto e come devono comportarsi le attività associate nell'incorporamento delle attività. (I64647)
Correzioni di bug
- Introduce l'
WindowAreaController
e le API per attivare la modalitàRearDisplay
per spostare la finestra corrente sul display allineato con la 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 alle 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 adattatori 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à
- Adattatori di rilascio 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à
- Corregge un bug per cui lo sfondo di un'app interrompe l'emissione di funzionalità di piegatura.
- Espandi l'API sperimentale ActivityEmbedding.
Modifiche alle API
- Un'API pubblica per verificare se un'attività viene incorporata. (I39eb7).
Correzioni di bug
- Aggiungi API che personalizzano il comportamento di finitura per i container 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 a
WindowInfoTracker
eFoldingFeature
.WindowMetricsCalculator
per aiutarti a calcolare le attuali metriche di Window.
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 attuale e massimo di
WindowMetrics
. - Aggiungi le 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.
- Imposta Attività come una dipendenza esplicita del metodo per WindowInfoTracker.
- Aggiungi una semplice TestRule per WindowMetricsCalculator per supportare gli sviluppatori che usano Robolectric.
Modifiche alle API
- Estrai le estensioni (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 una semplice Calcolatrice WindowMetrics. (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à affiancate.
Modifiche alle API
- È stata rimossa l'API currentWindowMetrics perché non è possibile fornirla in modo accurato. Usa invece WindowMetricsCalculator (Icda5f)
- L'API Extensions è stata aggiornata. (Ica92b).
- È stata aggiunta un'interfaccia per una nuova funzionalità che consente di incorporare le attività e visualizzarle una accanto all'altra nella finestra delle attività principali. (I5711d)
- Ha nascosto i costruttori per WindowMetrics e WindowLayoutInfo. Usa invece le API di test. (I5a1b5).
- Aggiungi un'API per creare oggetti WindowLayoutInfo falsi. (I4a2fd)
Correzioni di bug
- Risolto il 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 una funzionalità di piegatura di test che accetti un rettangolo. In questo modo sarà più facile eseguire dei test durante l'uso di Robolectric invece di 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
è stato convertito in un'interfaccia.
Modifiche alle API
- Rimuovi le vecchie costanti e trasforma FoldFeature un'interfaccia. (I9a2d5).
Correzioni di bug
- È stato eseguito l'upgrade delle librerie che dipendono dalla libreria
Test Core
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 regola classi / file corrispondenti.
- Converti le metriche della finestra corrente in un Flow in WindowInfoRepository perché il valore cambia nel tempo.
- Rinomina WindowInfoRepoJavaAdapter in WindowInfoRepoCallbackAdapter
- Aggiungi un metodo di supporto per creare oggetti FoldingFeature di test
- Aggiorna i pacchetti per raggruppare i corsi in base alle funzionalità che supportano.
Modifiche alle API
- Rinomina ActivityExt in Activity Extensions. Cambia da repository a repository. (I61a16)
- Aggiorna i pacchetti per i corsi. (I23ae2).
- Rimuovi WindowMetrics da WindowInfoRepo (I24663)
- Rimuovi WindowManager e utilizza WindowInfoRepo
- Imposta WindowBackend come interno. (I06d9a).
- Converti le metriche delle finestre in Flow.
- Rinomina l'adattatore Java in WindowInfoRepoCallbackAdapter
- Rimuovi callbackFlow in modo che non siano in uso altre API sperimentali. (Ia4d15).
- Aggiungi un metodo di supporto per creare funzionalità di visualizzazione di test.
- Passa da occlusionMode a occlusionType (If4cff)
Correzioni di bug
- Correggi l'errore ProGuard relativo alla rimozione della libreria di base.
- Correggi l'errore per cui WindowLayoutInfo non veniva inviato ad altri abbonati.
- Correggi l'errore in cui le modifiche alla configurazione non attivavano gli aggiornamenti delle funzionalità pieghevoli.
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 dalle costanti intere alle enumerazioni illimitate.
- Aggiungi un util di test per creare funzionalità di test di piegatura.
Modifiche alle API
- Aggiungi un metodo di supporto per creare funzionalità di visualizzazione di test. (I3cf54)
- Cambia da
occlusionMode
aocclusionType
.
- Cambia da
Correzioni di bug
- Emetti un valore iniziale quando aggiungi più consumer 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à
- 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 principali a Kotlin. Utilizzerà le funzioni di coroutine e di sospensione per esporre i dati asincroni in futuro.
- Aggiungi WindowInfoRepo come punto di interazione principale per ottenere WindowMetrics e il flusso di WindowLayoutInfo.
- Nuovo artefatto
window-java
per esporre le API compatibili con Java per registrare e annullare la registrazione dei callback. - Nuovi artefatti
window-rxjava2
ewindow-rxjava3
per esporre le API adattate di RxJava.
Modifiche alle API
- Aggiungi
WindowServices
per fornire le dipendenze in modo uniforme.- Aggiungi un'API basata sulla coroutine per utilizzare le informazioni sul layout delle finestre. (Iab70f)
- Esegui la migrazione della libreria principale di gestione delle finestre a Kotlin. (Icca34).
Correzioni di bug
- Aggiungi una nuova classe di dati per rappresentare i limiti delle caratteristiche. (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 avviato la migrazione a Kotlin e terminerà nella prossima release.
- DeviceState è stato rimosso dall'API pubblica. Usa invece FoldingFeature.
- Abbiamo rimosso
STATE_FLIPPED
dagli stati FoldingFeature perché al momento non è supportato da alcun caso d'uso. - Abbiamo inoltre rimosso le altre API ritirate.
Modifiche alle API
- Aggiunta di Kotlin come dipendenza.
- Esegui la migrazione della libreria di base a Kotlin. (Idd995)
- Builder
DisplayFeature
rimosso. (I61fa4) DeviceState
rimosso dall'API pubblica. Usa inveceFoldingFeature
. (Id6079)- Rimuovi il callback dello stato del dispositivo dalle estensioni. (I5ea83).
- Rimuovi
STATE_FLIPPED
da Pieghevole. (I9c4e1). - Rimuovi metodi di registrazione ritirati. (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 dei metodi pratici alla funzionalità Pieghevole in modo che le app possano capire se la funzionalità sta separando, occultando e determina l'orientamento della cerniera. Stiamo anche nascondendo il tipo di cerniera
Stiamo rimuovendo i metodi di lettura sincroni da WindowManager. I metodi di lettura sincroni sono soggetti a errori poiché esiste una race condizione implicita. Registra i listener e i callback per ricevere aggiornamenti su WindowLayoutInfo.
Modifiche alle API
- Aggiungere metodi pratici per lavorare con FoldingFeatures (Ie733f)
- Rimuove i metodi di lettura sincroni 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à
- Corregge un bug per cui non viene emessa nessuna informazione di layout Window in assenza di un'implementazione OEM. Ora emettiamo un valore WIndowLayoutInfo vuoto.
- È stato corretto un bug per cui lo stato non veniva aggiornato correttamente se lo stato della cerniera cambiava durante l'esecuzione dell'app in background. Ora lo stato dovrebbe essere coerente.
- Aggiorna i nostri file ProGuard per ignorare gli avvisi provenienti dalle dipendenze di runtime.
Correzioni di bug
- Invia un valore vuoto se manca la libreria OEM. (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à
- Emetti un valore vuoto per WindowLayoutInfo quando l'implementazione OEM è vuota. In questo modo dovrebbe essere più facile utilizzare la raccolta su più dispositivi. Poiché le API sono asincrone, è comunque consigliabile che le app scrivano codice difensivo ed emettano un valore predefinito dopo un timeout. Non offriamo alcuna garanzia sulle implementazioni OEM e il valore iniziale potrebbe subire ritardi.
Correzioni di bug
- Invia un valore vuoto se manca la libreria OEM. (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 contribuire a semplificare l'API e ridurre gli errori. Alcuni esempi degni di nota sono la rimozione delle operazioni di lettura sincrona da WindowManager e il ritiro di DeviceState. Le operazioni di lettura sincrone possono determinare condizioni di gara e avere una UI errata.
Abbiamo convertito DisplayFeature in un'interfaccia che verrà implementata in futuro da altre funzionalità. La nostra prima funzionalità è la funzionalità di piegatura, che ora è la rappresentazione di una piegatura dello schermo o di una 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 relative a una finestra, ad esempio la sua posizione e le dimensioni sullo schermo e gli eventuali riquadri di sistema. Abbiamo eseguito il backporting 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#getMassimaWindowMetrics().
Modifiche alle API
- Depreca le API che verranno rimosse nella prossima versione alpha (Ib7cc4)
- Aggiorna
ExtensionInterface
per accettare riferimenti espliciti alle attività. (I07ded) - Introduce l'API WindowMetrics. (i3ccee)
- Rimuovi i metodi di lettura sincroni da WindowManager (I69983)
- Rendi protetto il pacchetto ExtensionWindowBackend. (Ied208)
Correzioni di bug
- Aggiorna le API di
ExtensionInterface
per accettare i contesti visivi. (I8e827).
Contributi esterni
- Unisci DeviceState e WindowLayoutInfo per semplificare l'accesso ai dati. (Id34f4)
Versione 1.0.0-alpha01
27 febbraio 2020
Vengono rilasciate le versioni androidx.window:window:1.0.0-alpha01
e androidx.window:window-extensions:1.0.0-alpha01
. La versione 1.0.0-alpha01 contiene questi commit.
Questa è la prima versione della libreria di Gestione finestre.
Nuove funzionalità
DisplayFeature
: questa nuova API identifica le interruzioni nelle superfici a schermo piatto continue, come cerniere o piegheDeviceState
: questa nuova API fornisce la postura corrente del telefono da un elenco di posizioni definite (ad esempioCLOSED
,OPENED
,HALF_OPENED
e così via).