WindowManager
| Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
|---|---|---|---|---|
| 24 September 2025 | 1.5.0 | - | - | - |
Mendeklarasikan dependensi
Untuk menambahkan dependensi pada Window Manager, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk informasi selengkapnya.
Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi
aplikasi atau modul Anda:
Groovy
dependencies { implementation "androidx.window:window:1.5.0" // For Java-friendly APIs to register and unregister callbacks implementation "androidx.window:window-java:1.5.0" // For RxJava2 integration implementation "androidx.window:window-rxjava2:1.5.0" // For RxJava3 integration implementation "androidx.window:window-rxjava3:1.5.0" // For testing implementation "androidx.window:window-testing:1.5.0" }
Kotlin
dependencies { implementation("androidx.window:window:1.5.0") // For Java-friendly APIs to register and unregister callbacks implementation("androidx.window:window-java:1.5.0") // For RxJava2 integration implementation("androidx.window:window-rxjava2:1.5.0") // For RxJava3 integration implementation("androidx.window:window-rxjava3:1.5.0") // For testing implementation("androidx.window:window-testing:1.5.0") }
Masukan
Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Versi 1.5
Versi 1.5.0
24 September 2025
androidx.window:window-*:1.5.0 dirilis. Versi 1.5.0 berisi commit ini.
Perubahan penting sejak versi 1.4.0:
- Tambahkan titik henti sementara
WindowSizeClassuntuk Large dan XLarge. (I40d85) - Perluas penghitungan
WindowMetricske Konteks Aplikasi. (I8eeeb, b/360934048) - Menyediakan Getter untuk mengaktifkan akses langsung ke
WindowLayoutInfo(Ie9513) - Memperkenalkan API untuk menyimpan status penyematan secara otomatis dan memulihkan status penyematan secara otomatis saat proses aplikasi dimulai ulang. (Ie0295)
- Menghapus
WindowInsetsAPI eksperimental. (I68a71)
Perbaikan Bug
- Memperbaiki
EmbeddingRuleyang menampilkanhashCodeberbeda dalam beberapa kasus. (I748cc) - Perbaikan untuk kasus saat
NullPointerExceptiondapat terjadi karena error pada implementasi perangkat. - Perbaikan untuk tempat pemeriksaan keamanan
ActivityEmbeddingkami akan gagal karena proguard menghapus class yang tidak digunakan.
Kontribusi Eksternal
- Menambahkan semua platform KMP ke
window-core(If3d7c)
Versi 1.5.0-rc01
27 Agustus 2025
androidx.window:window-*:1.5.0-rc01 dirilis. Versi 1.5.0-rc01 berisi commit ini.
Perbaikan Bug
- Perbaikan untuk kasus saat
NullPointerExceptiondapat terjadi karena error pada implementasi perangkat. - Perbaikan untuk tempat pemeriksaan keamanan
ActivityEmbeddingkami akan gagal karena proguard menghapus class yang tidak digunakan.
Versi 1.5.0-beta02
13 Agustus 2025
androidx.window:window-*:1.5.0-beta02 dirilis. Versi 1.5.0-beta02 berisi commit ini.
Fitur Baru
- Perbaikan bug minor.
Kontribusi Eksternal
- Menambahkan semua platform KMP ke
window-core(If3d7c)
Versi 1.5.0-beta01
2 Juli 2025
androidx.window:window-*:1.5.0-beta01 dirilis. Versi 1.5.0-beta01 berisi commit ini.
Versi 1.5.0-alpha02
7 Mei 2025
androidx.window:window-*:1.5.0-alpha02 dirilis. Versi 1.5.0-alpha02 berisi commit ini.
Perubahan API
- Tambahkan titik henti sementara
WindowSizeClassuntuk Large dan XLarge. (I40d85) - Perluas penghitungan
WindowMetricske Konteks Aplikasi. (I8eeeb, b/360934048) - Menyediakan Getter untuk mengaktifkan akses langsung ke
WindowLayoutInfo(Ie9513) - Memperkenalkan API untuk menyimpan status penyematan secara otomatis dan memulihkan status penyematan secara otomatis saat proses aplikasi dimulai ulang. (Ie0295)
- Menghapus
WindowInsetsAPI eksperimental. (I68a71) - Menyembunyikan beberapa konstruktor (I87b8d)
Perbaikan Bug
- Memperbaiki
EmbeddingRuleyang menampilkanhashCodeberbeda dalam beberapa kasus. (I748cc)
Versi 1.5.0-alpha01
12 Maret 2025
androidx.window:window-*:1.5.0-alpha01 dirilis. Versi 1.5.0-alpha01 berisi commit ini.
Fitur Baru
- Rilis awal 1.5.0 berikutnya.
Versi 1.4
Versi 1.4.0
20 Mei 2025
androidx.window:window-*:1.4.0 dirilis. Versi 1.4.0 berisi commit ini.
Perubahan penting sejak versi 1.3.0
- Penyematan Aktivitas
- API untuk menyesuaikan animasi peluncuran
- Pembagi Interaktif
ActivityStackMenyematkan- Peredupan Dialog Layar Penuh
- Callback Info Jendela Aktivitas Sematan
- Peningkatan Pengelolaan
ActivityStack - Meluncurkan Aktivitas ke
ActivityStackyang ditentukan
WindowMetricsCalculator- Meningkatkan dukungan kemampuan pengujian
WindowMetrics- Metode praktis untuk menghitung
withDpdanheightDp - Perbarui pemeriksaan batas menjadi
isAtLeastdan gunakan batas bawah untuk mendukung penambahan nilai baru
- Metode praktis untuk menghitung
WindowSizeClass- Menambahkan cara menghitung dari
WindowMetrics
- Menambahkan cara menghitung dari
WindowInfoTracker- Menambahkan API untuk mendeteksi postur yang didukung di perangkat
Versi 1.4.0-rc02
23 April 2025
androidx.window:window-*:1.4.0-rc02 dirilis. Versi 1.4.0-rc02 berisi commit ini.
Perbaikan Bug
- Memperbaiki error proguard untuk
ActivityEmbedding.
Versi 1.4.0-rc01
12 Maret 2025
androidx.window:window-*:1.4.0-rc01 dirilis. Versi 1.4.0-rc01 berisi commit ini.
Fitur Baru
- Update pada API
WindowSizeClass. - Update pada API Penyematan Aktivitas.
Versi 1.4.0-beta02
12 Februari 2025
androidx.window:window-*:1.4.0-beta02 dirilis. Versi 1.4.0-beta02 berisi commit ini.
Fitur Baru
- Memperbaiki anotasi yang hanya ada di properti, tetapi tidak ada di getter.
Versi 1.4.0-beta01
15 Januari 2025
androidx.window:window-*:1.4.0-beta01 dirilis. Versi 1.4.0-beta01 berisi commit ini.
Fitur Baru
- Menambahkan API untuk memungkinkan penyesuaian Animasi
ActivityEmbedding. - Memperluas API pengujian
WindowMetricsCalculatoruntuk memungkinkan pemalsuan metrik jendela.
Perubahan API
- Menyembunyikan beberapa konstruktor (I87b8d)
- Mengizinkan aplikasi menyesuaikan animasi
ActivityEmbedding(If31a8) - Menambahkan dukungan untuk target KMP
watchosDeviceArm64dan menargetkan kotlin 1.9 (Icf15d, b/364652024) - Mengekspos API
WindowMetricsCalculator. (I1cebf)
Perbaikan Bug
- Library ini kini menggunakan anotasi nullabilitas JSpecify, yang merupakan penggunaan jenis. Developer Kotlin harus menggunakan argumen compiler berikut untuk menerapkan penggunaan yang benar:
-Xjspecify-annotations=strict(ini adalah nilai default yang dimulai dengan compiler Kotlin versi 2.1.0). (Ie69ac, b/326456246)
Versi 1.4.0-alpha05
16 Oktober 2024
androidx.window:window-*:1.4.0-alpha05 dirilis. Versi 1.4.0-alpha05 berisi commit ini.
Fitur Baru
- Tambahkan fungsi praktis untuk mendapatkan
widthDpdanheightDpdariWindowMetrics.
Perubahan API
- Menambahkan
widthDpdanheightDpkeWindowMetrics. (Ide026) - Menghapus
WindowInsetsAPI eksperimental. (I68a71) - Memperbarui nama metode pemeriksaan batas menjadi
isAtLeast(Ib0ab7)
Versi 1.4.0-alpha04
2 Oktober 2024
androidx.window:window-*:1.4.0-alpha04 dirilis. Versi 1.4.0-alpha04 berisi commit ini.
Perubahan API
- Menambahkan metode untuk menghitung
WindowSizeClassdariWindowMetrics. (874dba) - Ubah metode
WindowSizeClassmenjadicontainsWidthDp,containsHeightDp, dancontainsWindowSizeDpagar lebih jelas. (fa760d) - Konversi
WindowAreaControllerke class dasar abstrak. (I90893)
Perbaikan Bug
- Menambahkan dukungan untuk batas relatif saat membuat
FoldingFeaturepengujian. (2e6b3e) - Perbaikan bug umum saat memilih
WindowSizeClass.
Versi 1.4.0-alpha03
18 September 2024
androidx.window:window-*:1.4.0-alpha03 dirilis. Versi 1.4.0-alpha03 berisi commit ini.
Fitur Baru
- Tambahkan metode utilitas untuk mendapatkan
WindowSizeClassdariWindowMetrics. (I83f1f) - Mengganti nama
isAtLeastmenjadicontainsBreakpoint. (I85b47) - Tambahkan kelebihan beban ke
computeWindowSizeClassmenggunakan float. (I3dcb2, b/364677934, b/364677802, b/364680886)
Perbaikan Bug
- Tambahkan titik henti sementara yang tidak ada ke set titik henti sementara
WindowSizeClassdefault. - Memperbaiki bug saat dimensi ringkas tidak dipilih dengan benar dalam beberapa kasus.
Versi 1.4.0-alpha02
4 September 2024
androidx.window:window-*:1.4.0-alpha02 dirilis. Versi 1.4.0-alpha02 berisi commit ini.
Fitur Baru
Menambahkan dukungan untuk WindowSizeClass kustom.
- Buka konstruktor untuk
WindowSizeClasssehingga developer dapat menggunakannya sendiri. - Menambahkan metode utilitas
isAtLeastsehingga developer dapat memproses rentang nilaiWindowSizeClass. - Tambahkan fungsi ekstensi di
Set<WindowSizeClass>untuk menghitung kecocokan terbaik dari Set. - Tambahkan konstanta untuk titik henti sementara yang direkomendasikan Android.
- Tambahkan set titik henti sementara yang sesuai dengan titik henti sementara yang direkomendasikan Android.
Perubahan API
- Perbarui nama metode batas untuk
WindowSizeClass. (If89a6) - Perbarui API
WindowSizeClassuntuk mendukung penambahan nilai titik henti sementara baru pada masa mendatang. Daripada memiliki batas absolut, kami menggunakan batas bawah dan merekomendasikan developer menggunakan pemeriksaan batas bawah saat memprosesWindowSizeClass.WindowWidthSizeClassdanWindowHeightSizeClassyang ada tidak akan digunakan lagi karena tidak akan dikembangkan lebih lanjut. (I014ce)
Versi 1.4.0-alpha01
7 Agustus 2024
androidx.window:window-*:1.4.0-alpha01 dirilis. Versi 1.4.0-alpha01 berisi commit ini.
Fitur Baru
- Penyematan ActivityStack memungkinkan aplikasi menyematkan konten dalam satu penampung dan mengisolasi navigasinya dari penampung lain.
- Pembagi Interaktif memungkinkan aplikasi menampilkan pembagi tetap atau yang dapat ditarik di antara dua aktivitas dalam presentasi terpisah.
- Peredupan Dialog Layar Penuh memungkinkan aplikasi menentukan area peredupan dialog, untuk meredupkan seluruh jendela tugas atau hanya meredupkan penampung yang menampilkan dialog.
- Callback Info Jendela Aktivitas Sematan memungkinkan aplikasi terus menerima update jendela aktivitas sematan.
- Menyematkan Latar Belakang Animasi memungkinkan aplikasi menentukan latar belakang animasi, sehingga meningkatkan kualitas animasi transisi saat
ActivityEmbeddingdigunakan. - Pengelolaan ActivityStack yang Ditingkatkan memungkinkan aplikasi memiliki kontrol yang lebih besar atas
ActivityStackssaatActivityEmbeddingdigunakan, termasuk: - Meluncurkan aktivitas ke
ActivityStackyang ditentukan - Menyelesaikan
ActivityStack
Perubahan API
API
WindowInfoTracker#supportedPosturesbaru:- API untuk menentukan apakah perangkat mendukung mode TableTop untuk perangkat foldable. Menambahkan WindowAreaSessionPresenter#getWindow
Menambahkan API untuk mendukung penyematan
ActivityStack:- Class
SplitPinRule SplitController#pinTopActivityStackSplitController#unpinTopActivityStack
- Class
Menambahkan API untuk mengaktifkan dan mengonfigurasi pemisah interaktif
- Class
DividerAttributes SplitAttributes.Builder#setDividerAttributes
- Class
Menambahkan API untuk menyetel
EmbeddingConfigurationdanDimAreaBehavioruntuk dialog- Class
EmbeddingConfiguration - Class
DimAreaBehavior ActivityEmbeddingController#setEmbeddingConfiguration
- Class
Menambahkan API untuk menerima info update jendela aktivitas sematan
- Class
EmbeddedActivityWindowInfo ActivityEmbeddingController#embeddedActivityWindowInfo
- Class
Menambahkan API untuk menyetel latar belakang animasi penyematan
EmbeddingAnimationBackgroundSplitAttributes.Builder#setAnimationBackground
Menambahkan API untuk menyelesaikan
ActivityStacksActivityEmbeddingController#finishActivityStacks
Menambahkan API untuk menyetel peluncuran
ActivityStackActivityEmbeddingOptions#setLaunchingActivityStack
API berikut bersifat stabil dan tidak lagi eksperimental:
ActivityEmbeddingController#invalidateVisibleActivityStacks(dipindahkan dari SplitController#invalidateTopVisibleSplitAttributes)ActivityEmbeddingController#getActivityStackSplitController#updateSplitAttributes
Menambahkan API untuk 1.4. (I56774)
Perbaikan Bug
- Memperbaiki bug pada perangkat tertentu yang menyebabkan UNAVAILABLE ditampilkan, bukan ACTIVE, saat sesi aktif.
- Menghapus dukungan untuk
transferActivityToWindowAreadi perangkat denganvendorApiLevel2 karena dukungan API yang tidak stabil. - Memperkenalkan API untuk mengaktifkan tarik ke layar penuh untuk pemisah yang dapat ditarik pada Penyematan Aktivitas. (I645c9)
- Mengizinkan aplikasi menonaktifkan animasi
ActivityEmbeddingmelalui parameter animasi untukSplitAttributes. (Idc01a) - Menghapus penentuan batas akses manual ke API platform baru karena hal ini terjadi secara otomatis melalui pemodelan API saat menggunakan R8 dengan AGP 7.3 atau yang lebih baru (misalnya, R8 versi 3.3) dan untuk semua build saat menggunakan AGP 8.1 atau yang lebih baru (misalnya, D8 versi 8.1). Klien yang tidak menggunakan AGP disarankan untuk mengupdate ke D8 versi 8.1 atau yang lebih baru. Baca artikel ini untuk informasi selengkapnya. (Ia60e0, b/345472586)
- Izinkan ekstensi mengambil parameter animasi untuk
SplitAttributessehingga perangkat dapat menggunakannya untuk transisi animasi. (Iede00) - Menyembunyikan API overlay (Ic4251)
- Memperkenalkan API untuk mengonfigurasi pemisah tetap atau yang dapat ditarik untuk pemisahan (Ia7a78)
- Menambahkan kepadatan ke
WindowMetrics(Id6723) - Menambahkan API untuk mendapatkan
SupportedPostures. (If557a) - Menghapus
setLaunchingActivityStackdari API eksperimental (I191cf) - Memperkenalkan
ActivityEmbeddingController#embeddedActivityWindowInfo(I24312) - Menghentikan penggunaan
#getTokendan menambahkan#getActivityStackToken(Ie0471) - Memperkenalkan adaptor callback untuk API alur
embeddedActivityWindowInfo(Ida77f) - Menambahkan adaptor callback untuk API flow overlayInfo (I7264f)
- Memperkenalkan
WindowSdkExtensionsRuleuntuk menggantiextensionsVersionuntuk pengujian. (Ifb928) - - Migrasikan
#setLaunchingActivityStackke Bundle agar kompatibel dengan penggunaanActivityOptionsCompat.- Pengguna harus meneruskan
activityOptions.toBundle, bukanActvityOptionsitu sendiri. - Menghapus
#setLaunchingActivityStack(Activity). Pengguna harus bermigrasi untuk menggunakanActivityEmbeddingController#getActivityStac(Activity)guna mendapatkanActivityStack, dan meneruskanActivityStackke#setLaunchingActivityStack. (Ie0ccc)
- Pengguna harus meneruskan
- - Memperkenalkan
ActivityStack.TokendanSpltInfo.Tokensebagai ID untuk berkomunikasi antara WM Jetpack dan ekstensi.- Menghentikan penggunaan/Mengganti API untuk mengambil/mengembalikan Token, bukan IBinder. (I12b24)
- - Memperkenalkan
ActivityEmbeddingController#invalidateVisibleActivityStacks- Menghapus
SplitController#invalidateTopVisibleSplitAttributeskarena fitur ini digabungkan ke#invalidateVisibleActivityStacks(I02ef5)
- Menghapus
- - Menambahkan API untuk menyetel konfigurasi penyematan. (I59a4a)
- - Menambahkan API
ActivityStackandroidx.Windowatas menyematkan/melepas sematan- Memperbarui aplikasi demo untuk mengizinkan penyematan/pelepasan sematan atas
ActivityStack(I24dd3)
- Memperbarui aplikasi demo untuk mengizinkan penyematan/pelepasan sematan atas
- Menambahkan kembali
#finishActivityStacksdanActivityEmbeddingOptions(Ic1ab3) - Menghapus API yang tidak stabil. (Ibc534, b/302380585)
Versi 1.3
Versi 1.3.0
29 Mei 2024
androidx.window:window-*:1.3.0 dirilis. Versi 1.3.0 berisi commit ini.
Perubahan penting sejak versi 1.2.0
- Dukungan Multiplatform Kotlin untuk Class Ukuran Jendela.
Versi 1.3.0-rc01
14 Mei 2024
WindowManager Jetpack 1.3 menghadirkan dukungan Multiplatform Kotlin untuk fitur WindowSizeClass serta beberapa perbaikan bug.
androidx.window:window-*:1.3.0-rc01 dirilis. Versi 1.3.0-rc01 berisi commit ini.
Versi 1.3.0-beta02
1 Mei 2024
androidx.window:window-*:1.3.0-beta02 dirilis. Versi 1.3.0-beta02 berisi commit ini.
Perubahan API
- Menghapus dukungan untuk membuat dan menggunakan
WindowSizeClasskustom. (Id1143)
Perbaikan Bug
- Memperbaiki
KotlinReflectionInternalErroryang disebabkan oleh proguard yang menghapus beberapa file pada implementasi perangkat tertentu. (I01b02)
Versi 1.3.0-beta01
3 April 2024
androidx.window:window-*:1.3.0-beta01 dirilis. Versi 1.3.0-beta01 berisi commit ini.
Versi 1.3.0-alpha03
6 Maret 2024
androidx.window:window-*:1.3.0-alpha03 dirilis. Versi 1.3.0-alpha03 berisi commit ini.
Perubahan API
- Membagi
WindowSizeClassUtilmenjadi metode yang lebih terfokus. (Ie9292) - Pulihkan
WindowSizeClass#compute(I21355, b/324293374)
Perbaikan Bug
- Memperbaiki error saat konteks yang diberikan tidak di-unwrapping dengan benar. (94d10ce , b/318787482)
Versi 1.3.0-alpha02
7 Februari 2024
androidx.window:window-*:1.3.0-alpha02 dirilis. Versi 1.3.0-alpha02 berisi commit ini.
Fitur Baru
- Update yang dilakukan pada permukaan API Window Size Class API untuk meningkatkan fleksibilitas bagi developer yang ingin menggunakan class ukuran mereka sendiri.
Perubahan API
- Tambahkan batasan tinggi ke pemilih lebar. (I23393)
- Tambahkan fungsi utilitas untuk memilih
WindowSizeClassdari satu set. Menambahkan fungsi pemberian skor eksperimental sehingga developer dapat menulis pemilih mereka sendiri. Tambahkan fungsi ekstensi pemilih untuk memilihWindowSizeClassterlebar dalam batas tertentu. (I0c944) - Buka konstruktor
WindowSizeClassagar titik henti sementara kustom dapat ditambahkan. (Ic1ff3) - Menambahkan fungsi praktis untuk membuat class ukuran dari lebar, tinggi, dan kepadatan. (If67f4)
Perbaikan Bug
- Memperbaiki pengecualian saat nilai float dipangkas menjadi 0. (272ffac)
Versi 1.3.0-alpha01
15 November 2023
androidx.window:window-*:1.3.0-alpha01 dirilis. Versi 1.3.0-alpha01 berisi commit ini.
Fitur Baru
- Mengekspos API jendela eksperimental untuk mengakses layar belakang.
- Test API untuk membuat
FoldingFeaturekini stabil. - API pengujian untuk menyiapkan nilai
ActivityEmbeddingpalsu kini stabil. WindowLayoutInfoPublisherRulekini melaporkan penggantian saat mendapatkan nilai dariUiContext.WindowInfoTrackermelaporkan data fitur pelipatan ke parameterUiContext.- Mengekspos Versi Ekstensi di perangkat.
- konstanta
WindowPropertiesuntuk penggantian per aplikasi pengguna:PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE— Memberi tahu sistem bahwa aplikasi telah memilih tidak menggunakan penggantian kompatibilitas rasio aspek yang ditampilkan kepada pengguna.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE— Memberi tahu sistem bahwa aplikasi telah memilih tidak menggunakan opsi layar penuh dari setelan penggantian kompatibilitas rasio aspek pengguna
Versi 1.2
Versi 1.2.0
15 November 2023
androidx.window:window-*:1.2.0 dirilis. Versi 1.2.0 berisi commit ini.
Perubahan penting sejak 1.1.0
- Mengekspos API jendela eksperimental untuk mengakses layar belakang.
- Test API untuk membuat
FoldingFeaturekini stabil. - API pengujian untuk menyiapkan nilai
ActivityEmbeddingpalsu kini stabil. WindowLayoutInfoPublisherRulekini melaporkan penggantian saat mendapatkan nilai dariUiContext.WindowInfoTrackermelaporkan data fitur pelipatan ke parameterUiContext.- Mengekspos Versi Ekstensi di perangkat.
Versi 1.2.0-rc01
1 November 2023
androidx.window:window-*:1.2.0-rc01 dirilis. Versi 1.2.0-rc01 berisi commit ini.
Fitur Baru
- Mengekspos API jendela eksperimental untuk mengakses layar belakang.
- Test API untuk membuat
FoldingFeaturekini stabil. - API pengujian untuk menyiapkan nilai
ActivityEmbeddingpalsu kini stabil. WindowLayoutInfoPublisherRulekini melaporkan penggantian saat mendapatkan nilai dariUiContext.WindowInfoTrackermelaporkan data fitur pelipatan ke parameterUiContext.- Mengekspos Versi Ekstensi di perangkat.
Versi 1.2.0-beta04
18 Oktober 2023
androidx.window:window-*:1.2.0-beta04 dirilis. Versi 1.2.0-beta04 berisi commit ini.
Perubahan API
- Menghapus API yang tidak stabil. (Ibc534, b/302380585)
Versi 1.2.0-beta03
20 September 2023
androidx.window:window-*:1.2.0-beta03 dirilis. Versi 1.2.0-beta03 berisi commit ini.
Fitur Baru
- Menambahkan pemeriksaan
RequiresApiuntuk API yang memerlukan versi ekstensi tertentu agar berfungsi dengan benar. - Tambahkan API untuk mengekspos versi ekstensi di perangkat.
Perubahan API
- Anotasikan versi ekstensi SDK jendela yang diperlukan di API publik.
- Hapus
isXXXSupporteddi komponen Penyematan Aktivitas. (Ie3dae)
- Hapus
- Memperkenalkan
WindowSdkExtensionsuntuk melaporkan versi ekstensi di perangkat.- Memperkenalkan
RequiresWindowSdkExtensionuntuk memberikan anotasi pada versi ekstensi minimum yang diperlukan. (I05fd4)
- Memperkenalkan
- Membuat
WindowAreaInfo#getCapabilitytidak dapat bernilai null. (I17048)
Versi 1.2.0-beta01
26 Juli 2023
androidx.window:window-*:1.2.0-beta01 dirilis. Versi 1.2.0-beta01 berisi commit ini.
Fitur Baru
- Mengekspos API jendela eksperimental untuk mengakses layar belakang.
- Test API untuk membuat
FoldingFeaturekini stabil. - API pengujian untuk menyiapkan nilai
ActivityEmbeddingpalsu kini stabil. WindowLayoutInfoPublisherRulekini melaporkan penggantian saat mendapatkan nilai dariUiContext.WindowInfoTrackermelaporkan data fitur pelipatan ke parameterUiContext.
Perubahan API
- Menandai API
WindowAreasebagai eksperimental agar perubahan API dapat berlanjut untuk rilis stabil di 1.3 (I857f5) - Memperbarui file API untuk menganotasi penekanan kompatibilitas (I8e87a, b/287516207)
Versi 1.2.0-alpha03
21 Juni 2023
androidx.window:window-*:1.2.0-alpha03 dirilis. Versi 1.2.0-alpha03 berisi commit ini.
Fitur Baru
- Menghapus API yang tidak digunakan lagi dari antarmuka API.
- Menambahkan API untuk mendukung tampilan serentak.
- Menambahkan properti untuk menonaktifkan penggantian ukuran paksa.
- Tambahkan properti untuk menonaktifkan penggantian rasio aspek minimum.
- Menstabilkan
ActivityEmbeddingRuleuntuk mendukung pengujian unit di seputar Penyematan Aktivitas.
Perubahan API
- Menghapus API yang tidak digunakan lagi (I18d39)
- Menambahkan dukungan untuk tampilan serentak. (Ifcbb0)
Perbaikan Bug
- Menambahkan properti kompatibilitas penonaktifan untuk penggantian perubahan ukuran paksa (Ie7ab1)
- Menghapus
SESSION_STATE_CONTENT_INVISIBLEdari antarmuka ekstensi. (I6ed19) - Menstabilkan
ActivityEmbeddingRuleuntuk mendukung pengujian unit di seputar penyematan Aktivitas. (I8d6b6) - Menambahkan properti kompatibilitas penonaktifan untuk penggantian rasio aspek minimum. (I66390)
- Menghapus API WindowArea yang tidak digunakan lagi (Ieb67c)
- Ganti nama properti loop permintaan orientasi menjadi
PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED. (Ie2fbd) - Memperbarui nama konstanta sesi area jendela (I83675)
- Menambahkan properti kompatibilitas keikutsertaan yang mengabaikan loop permintaan orientasi saat terdeteksi (I0a7a2)
- Tambahkan
WindowAreaComponent#STATUS_ACTIVEuntuk menandakan bahwa fitur sudah aktif. (I62bc3) - Menambahkan API
RearDisplayPresentationMode(I0401c) - Menghapus API warna latar belakang untuk versi stabil. (I34c3e)
- Menyembunyikan API Area Jendela. (I39de0)
- Tambahkan metode untuk mengganti
SplitInfodiSplitController. Menambahkan metode pengujian untuk membuat ganda untukSplitInfodanActivityStack. (Icd69f) - Jadikan tag opsional untuk
ActivityRule.Builder. (Ib0b44) - Menghapus
RatioSplitType,ExpandContainersSplit, danHingeSplitType. Mereka sudahSplitTypesekarang.- Mengganti
#splitEqually(),#expandContainers(), dan#splitByHingedengan konstantaSplitType SPLIT_TYPE_EQUAL,SPLIT_TYPE_EXPAND, danSPLIT_TYPE_HINGE - Menghapus fungsi untuk menetapkan jenis penggantian jenis pemisahan engsel. Jika jenis pemisahan engsel tidak dapat diterapkan karena status perangkat atau jendela saat ini, maka akan kembali ke pemisahan penampung tugas induk secara merata. Gunakan
SplitController#setSplitAttributesCalculatoruntuk menyesuaikan jenis pemisahan penggantian. (Ifcc59)
- Mengganti
- Menghentikan
add/removeSplitCallback- Pindahkan
add/removeSplitCallbackkeSplitControllerCallbackAdapter - Menambahkan dukungan
Flowuntuk mendapatkan daftarSplitInfo(I7f1b6)
- Pindahkan
- Menambahkan aturan pengujian untuk
ActivityEmbeddingController(I42e9b) - Mengganti nama
ActivityOptionsCompatmenjadiActivityEmbeddingOptions(I89301) - Menambahkan
splitSupportStatusuntuk menunjukkan apakah penyematan Aktivitas tersedia. (I10024) - Perkenalkan
SplitAttributes.BackgroundColoruntuk merepresentasikan nilaiDEFAULTdengan lebih baik. Memperjelas bahwa warna latar belakang animasi non-buram tidak didukung, sehingga warna non-buram akan diperlakukan sebagai default, yang berarti menggunakan warna latar belakang jendela tema saat ini. (Ic6b95) - Mengganti
alwaysAllow()danalwaysDisallow()denganALWAYS_ALLOWdanALWAYS_DISALLOW. (I3057b) - Menambahkan API untuk
SplitRule,SplitAttributes,SplitAttributesCalculator. (I92d23) - Tambahkan
TestActivityStackuntuk membuatActivityStackuntuk pengujian- Tambahkan
TestSplitInfountuk membuatSplitInfountuk pengujian. (I8e779)
- Tambahkan
- Menambahkan cara untuk membuat
SplitAttributesCalculatorParamspalsu sehingga developer dapat memverifikasiSplitAttributesCalculatoryang disesuaikan (Id4a6e) - Menambahkan
WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context)danWindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context)(I66c7f)
Versi 1.2.0-alpha02
7 Juni 2023
androidx.window:window-*:1.2.0-alpha02 dirilis. Versi 1.2.0-alpha02 berisi commit ini.
Fitur Baru
- Memperbarui API pengujian agar memiliki konstanta untuk fitur pelipatan yang tidak ditentukan.
- Penggantian dengan
WindowLayoutInfoPublishRuleakan menggantikan semua nilaiwindowLayoutInfo, termasuk API berbasis Konteks.
Perubahan API
- Menambahkan konstanta untuk fitur pelipatan tengah yang tidak ditentukan. (I7530c)
Perbaikan Bug
- Update
WindowLayoutInfoPublishRuleuntuk mendukung penggantian padaWindowLayoutInfoberdasarkanContext. (I2037a)
Versi 1.2.0-alpha01
24 Mei 2023
androidx.window:window-*:1.2.0-alpha01 dirilis. Versi 1.2.0-alpha01 berisi commit ini.
Fitur Baru
Menstabilkan API pengujian terkait Penyematan Aktivitas dan WindowLayoutInfoTracker. ActivityEmbeddingRule telah dipromosikan ke versi stabil.
WindowMetricsCalculatorRule telah dipromosikan ke versi stabil.
Fungsi utilitas untuk membuat FoldingFeature untuk pengujian telah dipromosikan menjadi stabil.
Perubahan API
- Menstabilkan
ActivityEmbeddingRuleuntuk mendukung pengujian unit di seputar penyematan Aktivitas. (I8d6b6) WindowMetrisCalculatorTestRulestabil sehingga memungkinkan metrik stub untuk pengujian JVM. Sebaiknya gunakan emulator untuk mendapatkan hasil yang akurat.- Menstabilkan API pengujian untuk
WindowLayoutInfoguna mendukung pengujian JVM. (Ie036e) - Tambahkan
IntRangeuntuk nilai fitur pelipatan pengujian. (I69f7d)
Versi 1.1
Versi 1.1.0
7 Juni 2023
androidx.window:window-*:1.1.0 dirilis. Versi 1.1.0 berisi commit ini.
Perubahan penting sejak versi 1.0.0
Penyematan Aktivitas
- Menambahkan
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLEDsebagai properti boolean tag<application>dalam manifes aplikasi. isSplitSupportedyang tidak digunakan lagi dan diganti dengansplitSupportStatusuntuk memberikan informasi yang lebih mendetail tentang alasan fitur pemisahan tidak tersedia.- Menambahkan class bertingkat
SplitController.SplitSupportStatusuntuk menyediakan konstanta status bagi propertisplitSupportStatus. - Memfaktorkan ulang
SplitControllerke beberapa modul:- Modul
ActivityEmbeddingControlleruntuk API terkaitActivityatauActivityStack. isActivityEmbeddeddipindahkan dariSplitControllerkeActivityEmbeddingController.- Modul
RuleControlleruntuk operasi terkaitEmbeddingRule: - Menghapus API
SplitController: clearRegisteredRules()getSplitRules()initialize()registerRule()unregisterRule()- Menambahkan API
RuleController: addRule()— Menambahkan aturan atau memperbarui aturan yang memiliki tag yang sama.removeRule()— Menghapus aturan dari kumpulan aturan terdaftar.setRules()— Menetapkan kumpulan aturan.clearRules()— Menghapus semua aturan terdaftar.parseRules()— Mengurai aturan dari definisi aturan XML.
- Modul
- Semua modul memerlukan konteks untuk diinisialisasi oleh metode
#getInstance(), termasuk:ActivityEmbeddingController#getInstance(Context)SplitController#getInstance(Context)RuleController#getInstance(Context)
- Menambahkan class
EmbeddingAspectRatiountuk menentukan konstanta perilaku seperti enum yang terkait dengan rasio aspek tampilan. - Menambahkan class
SplitAttributesuntuk menentukan tata letak terpisah. - Menambahkan fungsi kalkulator
SplitAttributeskeSplitControlleruntuk menyesuaikan tata letak pemisahan:setSplitAttributesCalculator(Function)clearSplitAttributesCalculator()isSplitAttributesCalculatorSupported()untuk memeriksa apakah APISplitAttributesCalculatordidukung di perangkat
- Menambahkan kolom
EmbeddingRule#tag. - Update API di
SplitRule:- Menambahkan
defaultSplitAttributes— Menentukan tata letak pemisahan default dari pemisahan; menggantikansplitRatiodanlayoutDirection. - Menambahkan terjemahan properti XML
splitRatiodansplitLayoutDirectionkedefaultSplitAttributes. - Mengubah definisi dimensi minimum untuk menggunakan piksel kepadatan mandiri (dp) dan bukan piksel.
- Menambahkan
minHeightDpdengan nilai default 600 dp. - Mengubah
minWidthmenjadiminWidthDpdengan nilai default 600 dp. - Mengubah
minSmallestWidthmenjadiminSmallestWidthDpdengan nilai default 600 dp. - Menambahkan
maxAspectRatioInHorizontaldengan nilai defaultALWAYS_ALLOW. - Menambahkan
maxAspectRatioInPortraitdengan nilai default 1.4. - Menentukan class bertingkat
FinishBehavioruntuk menggantikan konstanta perilaku penyelesaian. - Menerapkan perubahan properti pada class bertingkat Builder dari
SplitPairRuledanSplitPlaceholderRule.
- Menambahkan
- Mengganti
SplitInfo#getSplitRatio()denganSplitInfo#getSplitAttributes()untuk memberikan informasi tambahan terkait pemisahan.
WindowLayout
- Menambahkan dukungan konteks UI non-aktivitas eksperimental ke
WindowInfoTracker. - Menambahkan konteks UI non-aktivitas eksperimental ke
WindowMetricsCalculator.
Langkah-Langkah Migrasi
- Untuk mengaktifkan penyematan aktivitas guna menampilkan aktivitas dalam pemisahan, aplikasi harus menambahkan properti
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLEDke tag<application>manifes:xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />Hal ini memungkinkan sistem mengoptimalkan perilaku pemisahan untuk aplikasi terlebih dahulu. - Rasio
SplitInfo- Periksa apakah pemisahan saat ini ditumpuk:
kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType - Periksa rasio saat ini:
kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
- Periksa apakah pemisahan saat ini ditumpuk:
- Migrasi SplitController:
SplitController.getInstance()berubah menjadiSplitController.getInstance(Context).SplitController.initialize(Context, @ResId int)berubah menjadiRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).SplitController.getInstance().isActivityEmbedded(Activity)berubah menjadiActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).SplitController.getInstance().registerRule(rule)berubah menjadiRuleController.getInstance(Context).addRule(rule).SplitController.getInstance().unregisterRule(rule)berubah menjadiRuleController.getInstance(Context).removeRule(rule).SplitController.getInstance().clearRegisteredRules()berubah menjadiRuleController.getInstance(Context).clearRules().SplitController.getInstance().getSplitRules()berubah menjadiRuleController.getInstance(Context).getRules().
- Migrasi properti
SplitRule:minWidthdanminSmallestWidthkini menggunakan unit dp, bukan piksel. Aplikasi dapat menggunakan panggilan berikut:kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )atau cukup membagiminWithdalam piksel dengandisplayMetrics#density.
- Konstanta perilaku penyelesaian harus dimigrasikan ke konstanta class seperti enum
FinishBehavior:FINISH_NEVERberubah menjadiFinishBehavior.NEVER.FINISH_ALWAYSberubah menjadiFinishBehavior.ALWAYS.FINISH_ADJACENTberubah menjadiFinishBehavior.ADJACENT.
- Arah tata letak harus dimigrasikan ke
SplitAttributes.LayoutDirection:ltrberubah menjadiSplitAttributes.LayoutDirection.LEFT_TO_RIGHT.rtlberubah menjadiSplitAttributes.LayoutDirection.RIGHT_TO_LEFT.localeberubah menjadiSplitAttributes.LayoutDirection.LOCALE.splitRatioharus dimigrasikan keSplitAttributes.SplitType.ratio(splitRatio).
SplitPairRule.Buildermigrasi:SplitPairRule.Builder(filters, minWidth, minSmallestWidth)berubah menjadikotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.setLayoutDirection(layoutDirection)dansetSplitRatio(ratio)berubah menjadikotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )setFinishPrimaryWithSecondarydansetFinishSecondaryWithPrimarymenggunakan konstanta seperti enumFinishBehavior. Lihat “Migrasi SplitRule” untuk mengetahui detailnya.- Gunakan
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)untuk menampilkan pemisahan di perangkat potret.
SplitPlaceholder.Buildermigrasi:- Hanya memiliki parameter
filtersdanplaceholderIntent. Properti lainnya dipindahkan ke setter. Lihat “Migrasi SplitPairRule.Builder” untuk mengetahui detailnya. setFinishPrimaryWithPlaceholdermenggunakan konstanta seperti enumFinishBehavior. Lihat “Migrasi SplitRule” untuk mengetahui detailnya.setLayoutDirection(layoutDirection)dansetSplitRatio(ratio)berubah menjadi:kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )- Gunakan
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)untuk menampilkan pemisahan di perangkat potret.
- Hanya memiliki parameter
Versi 1.1.0-rc01
10 Mei 2023
androidx.window:window-*:1.1.0-rc01 dirilis. Versi 1.1.0-rc01 berisi commit ini.
Fitur Baru
- Merilis
ActivityEmbeddingsebagai API stabil. - Beragam perbaikan bug.
Versi 1.1.0-beta02
5 April 2023
androidx.window:window-*:1.1.0-beta02 dirilis. Versi 1.1.0-beta02 berisi commit ini.
Fitur Baru
- Perbaikan dan pembersihan internal.
Versi 1.1.0-beta01
22 Maret 2023
androidx.window:window-*:1.1.0-beta01 dirilis. Versi 1.1.0-beta01 berisi commit ini.
Penyematan Aktivitas
- Menambahkan
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLEDsebagai properti boolean tag<application>dalam manifes aplikasi. isSplitSupportedyang tidak digunakan lagi dan diganti dengansplitSupportStatusuntuk memberikan informasi yang lebih mendetail tentang alasan fitur pemisahan tidak tersedia.- Menambahkan class bertingkat
SplitController.SplitSupportStatusuntuk menyediakan konstanta status bagi propertisplitSupportStatus. - Memfaktorkan ulang
SplitControllerke beberapa modul:- Modul
ActivityEmbeddingControlleruntuk API terkaitActivityatauActivityStack. isActivityEmbeddeddipindahkan dariSplitControllerkeActivityEmbeddingController.- Modul
RuleControlleruntuk operasi terkaitEmbeddingRule: - API
SplitControlleryang Dihapus:clearRegisteredRules()getSplitRules()initialize()registerRule()unregisterRule()
- Menambahkan API
RuleController:addRule()— Menambahkan aturan atau memperbarui aturan yang memiliki tag yang sama.removeRule()— Menghapus aturan dari kumpulan aturan terdaftar.setRules()— Menetapkan kumpulan aturan.clearRules()— Menghapus semua aturan terdaftar.- `parseRules() — Mengurai aturan dari definisi aturan XML.
- Modul
- Semua modul memerlukan konteks untuk diinisialisasi oleh metode
#getInstance(), termasuk:ActivityEmbeddingController#getInstance(Context)SplitController#getInstance(Context)RuleController#getInstance(Context)
- Menambahkan class
EmbeddingAspectRatiountuk menentukan konstanta perilaku seperti enum yang terkait dengan rasio aspek tampilan. - Menambahkan class
SplitAttributesuntuk menentukan tata letak terpisah. - Menambahkan fungsi kalkulator
SplitAttributeskeSplitControlleruntuk menyesuaikan tata letak pemisahan:setSplitAttributesCalculator(Function)clearSplitAttributesCalculator()isSplitAttributesCalculatorSupported()untuk memeriksa apakah API SplitAttributesCalculator didukung di perangkat
- Menambahkan kolom
EmbeddingRule#tag. - Update API di
SplitRule:- Menambahkan
defaultSplitAttributes— Menentukan tata letak pemisahan default dari pemisahan; menggantikansplitRatiodanlayoutDirection. - Menambahkan terjemahan properti XML
splitRatiodansplitLayoutDirectionkedefaultSplitAttributes. - Mengubah definisi dimensi minimum untuk menggunakan piksel kepadatan mandiri (dp) dan bukan piksel.
- Menambahkan
minHeightDpdengan nilai default 600 dp. - Mengubah
minWidthmenjadiminWidthDpdengan nilai default 600 dp. - Mengubah
minSmallestWidthmenjadiminSmallestWidthDpdengan nilai default 600 dp. - Menambahkan
maxAspectRatioInHorizontaldengan nilai defaultALWAYS_ALLOW. - Menambahkan
maxAspectRatioInPortraitdengan nilai default1.4. - Menentukan class bertingkat
FinishBehavioruntuk menggantikan konstanta perilaku penyelesaian. - Menerapkan perubahan properti pada class bertingkat
BuilderdariSplitPairRuledanSplitPlaceholderRule.
- Menambahkan
- Mengganti
SplitInfo#getSplitRatio()denganSplitInfo#getSplitAttributes()untuk memberikan informasi tambahan terkait pemisahan.
WindowLayout
- Menambahkan dukungan konteks UI non-aktivitas ke
WindowInfoTracker. - Menambahkan konteks UI non-aktivitas ke
WindowMetricsCalculator.
Langkah-Langkah Migrasi
- Untuk mengaktifkan penyematan aktivitas guna menampilkan aktivitas dalam pemisahan, aplikasi harus menambahkan properti
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLEDke tag<application>manifes:xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />Hal ini memungkinkan sistem mengoptimalkan perilaku pemisahan untuk aplikasi terlebih dahulu. - Rasio
SplitInfo- Periksa apakah pemisahan saat ini ditumpuk:
kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType - Periksa rasio saat ini:
kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
- Periksa apakah pemisahan saat ini ditumpuk:
SplitControllermigrasi:SplitController.getInstance()berubah menjadiSplitController.getInstance(Context).SplitController.initialize(Context, @ResId int)berubah menjadiRuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).SplitController.getInstance().isActivityEmbedded(Activity)berubah menjadiActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).SplitController.getInstance().registerRule(rule)berubah menjadiRuleController.getInstance(Context).addRule(rule).SplitController.getInstance().unregisterRule(rule)berubah menjadiRuleController.getInstance(Context).removeRule(rule).SplitController.getInstance().clearRegisteredRules()berubah menjadiRuleController.getInstance(Context).clearRules().SplitController.getInstance().getSplitRules()berubah menjadiRuleController.getInstance(Context).getRules().
- Migrasi properti
SplitRule:minWidthdanminSmallestWidthkini menggunakan unit dp, bukan piksel. Aplikasi dapat menggunakan panggilan berikut:kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )atau cukup membagiminWithdalam piksel dengandisplayMetrics#density.
- Konstanta perilaku penyelesaian harus dimigrasikan ke konstanta class seperti enum
FinishBehavior:FINISH_NEVERberubah menjadiFinishBehavior.NEVER.FINISH_ALWAYSberubah menjadiFinishBehavior.ALWAYS.FINISH_ADJACENTberubah menjadiFinishBehavior.ADJACENT.
- Arah tata letak harus dimigrasikan ke
SplitAttributes.LayoutDirection:ltrberubah menjadiSplitAttributes.LayoutDirection.LEFT_TO_RIGHT.rtlberubah menjadiSplitAttributes.LayoutDirection.RIGHT_TO_LEFT.localeberubah menjadiSplitAttributes.LayoutDirection.LOCALE.splitRatioharus dimigrasikan keSplitAttributes.SplitType.ratio(splitRatio).
SplitPairRule.Buildermigrasi:SplitPairRule.Builder(filters, minWidth, minSmallestWidth)berubah menjadikotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.setLayoutDirection(layoutDirection)dansetSplitRatio(ratio)berubah menjadikotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )setFinishPrimaryWithSecondarydansetFinishSecondaryWithPrimarymenggunakan konstanta seperti enumFinishBehavior. Lihat “Migrasi SplitRule” untuk mengetahui detailnya.- Gunakan
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)untuk menampilkan pemisahan di perangkat potret.
SplitPlaceholder.Buildermigrasi:- Hanya memiliki parameter
filtersdanplaceholderIntent. Properti lainnya dipindahkan ke setter. Lihat “Migrasi SplitPairRule.Builder” untuk mengetahui detailnya. setFinishPrimaryWithPlaceholdermenggunakan konstanta seperti enumFinishBehavior. Lihat “Migrasi SplitRule” untuk mengetahui detailnya.setLayoutDirection(layoutDirection)dansetSplitRatio(ratio)berubah menjadi:kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )- Gunakan
setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW)untuk menampilkan pemisahan di perangkat potret.
- Hanya memiliki parameter
Versi 1.1.0-alpha06
22 Februari 2023
androidx.window:window-*:1.1.0-alpha06 dirilis. Versi 1.1.0-alpha06 berisi commit ini.
Fitur Baru
- Mengekspos versi eksperimental untuk mendapatkan
WindowLayoutInfodari konteks UI.
Perubahan API
- Menambahkan
splitSupportStatusuntuk menunjukkan apakah penyematan Aktivitas tersedia. (I10024) - Membuat Konteks UI
WindowLayoutInfoAPI sebagai eksperimental. (I58ee0) - Memperkenalkan
WindowAreaControllerdan API untuk mengaktifkan ModeRearDisplayguna memindahkan jendela saat ini ke layar yang sejajar dengan kamera belakang. (Iffcbf) - Memperbarui warna latar belakang default. (I1ac1b)
- Menambahkan parameter
SplitAttributes. (I18bdd) - Menambahkan API untuk
SplitRule,SplitAttributes,SplitAttributesCalculator. (I92d23) - Meningkatkan API terkait
maxAspectRatio:- Mengganti
alwaysAllow()danalwaysDisallow()denganALWAYS_ALLOWdanALWAYS_DISALLOW. - Memperbarui dokumentasi API @see dengan dokumentasi mandiri. (I3057b)
- Mengganti
- Konstruktor berikut dihapus dari API publik karena seharusnya tidak dipanggil oleh aplikasi.
- Konstruktor
SplitInfo - Konstruktor
ActivityStack(Ide534)
- Konstruktor
SplitRulekini menggunakanmaxAspectRatioInPortrait/Landscape. Hal ini hanya memungkinkan pemisahan aktivitas jika rasio aspek batas induk lebih kecil atau sama denganmaxAspectRatioyang diminta. (Ia5990)- Mengubah
RuleController#parseRulesmenjadi statis (I785df) - Meningkatkan API terkait ActivityEmbedding
- Menyelaraskan penamaan API - Menggunakan tambahkan/hapus untuk beberapa instance:
registerRuleberubah menjadiaddRuleunregisterRuleberubah menjadiremoveRule- Mengganti
getSplitRulesdengangetRuleskarenaActivityRulebukan aturan pemisahan - Menambahkan
RuleController#setRulesuntuk menetapkan sekumpulan aturan - Mengekstrak API terkait aturan dari
SplitControllerkeRuleControllersingleton. API tersebut adalah: addRuleremoveRulegetRulessetRulesclearRulesparseRules- Mengekstrak
#isActivityEmbeddeddariSplitControllerkeActivityEmbeddingControllersingleton. API tersebut adalah: isActivityEmbedded- Menghapus
SplitController#initialize. Untuk menetapkan aturan dari file XML, gunakanRuleController#parseRulesdan#setRules. Sebelum perubahan ini:SplitController.initialize(context, R.xml.static_rules)Setelah perubahan ini:val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules) - Kita tidak lagi membedakan aturan statis dengan aturan runtime. Meskipun demikian, memanggil hasil
#clearRulesakan menghapus semua aturan, terlepas dari aturan tersebut terdaftar dengan definisi aturan XML statis atau saat runtime. Untuk mempertahankan perilaku lamaSplitController#clearRegisteredRules, panggilRuleController#parseRulesdengan ID resource XML dan panggilRuleController#setRulesuntuk menetapkan kembali aturan. Sebelum perubahan ini:SplitController.getInstance(context).clearRegisteredRules()Setelah perubahan ini:val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)(Ib3967)
- Meningkatkan SplitRule API:
- Menggunakan dimensi min dalam DP, bukan piksel untuk
SplitRule. - Memfaktorkan ulang untuk
SplitRuleBuilder agar menggunakan dimensi min sebagai opsional. (I95f17)
- Menggunakan dimensi min dalam DP, bukan piksel untuk
- Meneruskan Konteks untuk melakukan inisialisasi
SplitController(I42549) - Mengganti nama
SplitRule#layoutDirmenjadi#layoutDirection, danSplitRule Builder#setLayoutDirmenjadiBuilder#setLayoutDirection. (I3f6d1)
Versi 1.1.0-alpha04
9 November 2022
androidx.window:window-*:1.1.0-alpha04 dirilis. Versi 1.1.0-alpha04 berisi commit ini.
Fitur Baru
- Mengekspos metode untuk menentukan apakah
ActivityStackkosong untukActivityEmbedding. - Menghapus tag API eksperimental dari
ActivityEmbeddingAPI. - Menyembunyikan konstruktor
ActivityRulekarenaBuilderadalah cara yang direkomendasikan untuk membuat. - Menambahkan metode eksperimental untuk mendapatkan
WindowInsetsdiWindowMetrics. - Mengupdate
SplitPlaceholderFinishBehavioragar placeholder tidak diselesaikan. Menyelesaikan placeholder yang menyebabkan beberapa perilaku membingungkan.
Perubahan API
- Membuat val
isEmptymenjadi publik untuk menggantikan funisEmpty. - Mengganti nama aktivitas parameter
ActivityStackmenjadiactivitiesInProcess. (Ia5055) - Menghapus
ActivityFilter#matchesClassNamedanActivityFilter#matchesClassNameOrWildCardkarena keduanya membingungkan. - Menambahkan
ActivityFilter#componentNameabdActivityFilter#intentActionuntuk memungkinkan pemanggil membedakan filter yang berbeda (I41f22) - Menghapus API
@Deprecateddari API eksperimental (I216b3) - Menghapus
@ExperimentalWindowApiuntuk Activity Embedding API (I69ebe) - Menyembunyikan konstruktor
ActivityRuledan menggunakan Builder sebagai gantinya. (If4eb6) - Menambahkan API untuk memeriksa apakah Aktivitas merupakan bagian dari
ActivityFilter. (Ia43cf) - Mengupdate file API untuk menunjukkan perubahan di class
WindowMetricsdanWindowMetricsCalculatorCompat(I667fe) - Mengupdate
ActivityEmbeddingProperti Javadoc dan nama class (Ia1386) - Menambahkan nama tag properti
ActivityEmbeddingyang akan digunakan di AndroidManifest.xml (Id1ad4) - Menambahkan API baru
SplitPlaceholderFinishBehaviordanSplitPlaceholderRule.finishPrimaryWithPlaceholderyang menggantikanSplitPlaceholderRule.finishPrimaryWithSecondarylama yang menentukan kapan aktivitas placeholder selesai dan bagaimana aktivitas terkait dalam Penyematan Aktivitas harus berperilaku. (I64647)
Perbaikan Bug
- Memperkenalkan
WindowAreaControllerdan API untuk mengaktifkan ModeRearDisplayguna memindahkan jendela saat ini ke layar yang sejajar dengan kamera belakang. (I388ab)
Versi 1.1.0-alpha03
27 Juli 2022
androidx.window:window-*:1.1.0-alpha03 dirilis. Versi 1.1.0-alpha03 berisi commit ini.
Fitur Baru
- Memperbarui nilai default untuk aturan penyematan.
Perubahan API
- Memperbarui nilai default untuk properti aturan penyematan. (Ic4d35)
Versi 1.1.0-alpha02
11 Mei 2022
androidx.window:window-*:1.1.0-alpha02 dirilis. Versi 1.1.0-alpha02 berisi commit ini.
Fitur Baru
- Merilis library adaptor untuk mendukung Java dan RxJava.
Versi 1.1.0-alpha01
11 Mei 2022
androidx.window:window-*:1.1.0-alpha01 dirilis. Versi 1.1.0-alpha01 berisi commit ini.
Fitur Baru
- Merilis adaptor untuk mendukung Java dan RxJava
Versi 1.1.0-alpha01
20 April 2022
androidx.window:window:1.1.0-alpha01 dirilis. Versi 1.1.0-alpha01 berisi commit ini.
Fitur Baru
- Memperbaiki bug yang menyebabkan latar belakang aplikasi berhenti memunculkan fitur lipat.
- Memperluas pada API ActivityEmbedding eksperimental.
Perubahan API
- API publik untuk memeriksa apakah aktivitas sedang disematkan. (I39eb7)
Perbaikan Bug
- Menambahkan API yang menyesuaikan perilaku penyelesaian untuk penampung dalam pemisahan aktivitas (I1a1e4)
- Menambahkan opsi konfigurasi baru untuk aturan pemisahan aktivitas. (Iec6af)
Versi 1.0
Versi 1.0.0
26 Januari 2022
androidx.window:window-*:1.0.0 dirilis. Versi 1.0.0 berisi commit ini.
Fitur utama 1.0.0
- Dukungan untuk ponsel foldable melalui
WindowInfoTrackerdanFoldingFeature.WindowMetricsCalculatoruntuk membantu menghitung WindowMetrics saat ini.
Versi 1.0.0-rc01
15 Desember 2021
androidx.window:window-*:1.0.0-rc01 dirilis. Versi 1.0.0-rc01 berisi commit berikut ini.
Fitur Baru
- Menambahkan dukungan untuk ponsel lipat melalui
WindowInfoTracker. - Menambahkan metode untuk menghitung
WindowMetricssaat ini dan maksimum. - Menambahkan API pengujian pendukung.
Versi 1.0.0-beta04
17 November 2021
androidx.window:window-*:1.0.0-beta04 dirilis. Versi 1.0.0-beta04 berisi commit berikut ini.
Fitur Baru
- Mengganti nama WindowInfoRepository menjadi WindowInfoTracker.
- Membuat Aktivitas menjadi dependensi metode eksplisit untuk WindowInfoTracker.
- Menambahkan TestRule sederhana untuk WindowMetricsCalculator guna mendukung developer menggunakan Robolectric.
Perubahan API
- Mengekstrak ekstensi (I25a5f)
- Menambahkan isEmpty di ActivityStack (I5a4e6)
- Mengganti nama WindowInfoRepository menjadi WindowInfoTracker.
- Mengupdate dependensi java/rxjava/testing agar sesuai. (I0da63)
- Menambahkan aturan pengujian untuk WindowMetricsCalculator sederhana. (Ibacdb)
Versi 1.0.0-beta03
27 Oktober 2021
androidx.window:window-*:1.0.0-beta03 dirilis. Versi 1.0.0-beta03 berisi commit berikut ini.
Fitur Baru
- Menambahkan Activity Embedding API eksperimental. Versi tata letak awal ini memungkinkan tampilan dua Aktivitas secara berdampingan.
Perubahan API
- Menghapus currentWindowMetrics API karena kami tidak dapat menyediakannya secara akurat. Sebagai gantinya, gunakan WindowMetricsCalculator (Icda5f)
- Memperbarui api ekstensi. (Ica92b)
- Menambahkan antarmuka untuk fitur baru yang memungkinkan penyematan aktivitas dan menampilkannya secara berdampingan dalam jendela tugas induk. (I5711d)
- Menyembunyikan konstruktor untuk WindowMetrics dan WindowLayoutInfo, dan sebagai gantinya harap gunakan API pengujian. (I5a1b5)
- Menambahkan API untuk membuat objek WindowLayoutInfo palsu. (I4a2fd)
Perbaikan Bug
- Memperbaiki kebocoran memori. (I3fc79, b/202989046)
Versi 1.0.0-beta02
1 September 2021
androidx.window:window-*:1.0.0-beta02 dirilis. Versi 1.0.0-beta02 berisi commit ini.
Fitur Baru
- Menambahkan anotasi eksperimental untuk memberi anotasi pada API eksperimental. (I9f1b6)
- Menambahkan metode pengujian untuk membuat FoldingFeature pengujian yang menerima Rect. Hal ini akan mempermudah pengujian saat menggunakan Robolectric dibandingkan dengan Aktivitas yang sebenarnya. (Id1cca)
Versi 1.0.0-beta01
18 Agustus 2021
androidx.window:window-*:1.0.0-beta01 dirilis. Versi 1.0.0-beta01 berisi commit ini.
Fitur Baru
- Menghapus konstanta lama dan membuat
FoldingFeaturemenjadi antarmuka.
Perubahan API
- Menghapus konstanta lama dan menjadikan FoldFeature sebagai antarmuka. (I9a2d5)
Perbaikan Bug
- Library yang bergantung pada library
Test Coretelah diupgrade ke versi1.4.0dan kini akan berfungsi dengan platform Android versi S. (I88b72, b/189353863)
Versi 1.0.0-alpha10
4 Agustus 2021
androidx.window:window-*:1.0.0-alpha10 dirilis. Versi 1.0.0-alpha10 berisi commit berikut.
Fitur Baru
- Mengganti nama WindowInfoRepo menjadi WindowInfoRepository dan menyesuaikan class/file yang sesuai.
- Mengonversi metrik jendela saat ini menjadi Flow di WindowInfoRepository karena nilainya berubah dari waktu ke waktu.
- Mengganti nama WindowInfoRepoJavaAdapter menjadi WindowInfoRepoCallbackAdapter
- Menambahkan metode helper untuk membuat objek FoldingFeature pengujian
- Mengupdate paket ke class grup berdasarkan fitur yang didukungnya.
Perubahan API
- Mengganti Nama ActivityExt menjadi ActivityExtensions Perubahan dari Repo ke Repository. (I61a16)
- Mengupdate paket untuk class. (I23ae2)
- Menghapus WindowMetrics dari WindowInfoRepo (I24663)
- Menghapus WindowManager dan menggunakan WindowInfoRepo
- Menjadikan WindowBackend secara internal. (I06d9a)
- Mengonversi metrik jendela ke Alur.
- Mengganti nama adaptor Java menjadi WindowInfoRepoCallbackAdapter
- Menghapus callbackFlow sehingga tidak ada lagi API eksperimental yang sedang digunakan. (Ia4d15)
- Menambahkan metode helper untuk membuat fitur tampilan pengujian.
- Mengubah occlusionMode ke occlusionType (If4cff)
Perbaikan Bug
- Memperbaiki error proguard saat library inti dihapus.
- Memperbaiki error saat WindowLayoutInfo tidak dikirimkan ke pelanggan tambahan.
- Memperbaiki error saat perubahan konfigurasi tidak akan memicu update fitur lipat.
Versi 1.0.0-alpha09
30 Juni 2021
androidx.window:window-*:1.0.0-alpha09 dirilis. Versi 1.0.0-alpha09 berisi commit berikut ini.
Fitur Baru
- Mengubah dari konstanta bilangan bulat menjadi enum tidak terbatas.
- Menambahkan utilitas pengujian untuk membuat fitur pengujian lipat.
Perubahan API
- Menambahkan metode helper untuk membuat fitur tampilan pengujian. (I3cf54)
- Mengubah dari
occlusionModemenjadiocclusionType.
- Mengubah dari
Perbaikan Bug
- Membuat nilai awal saat menambahkan beberapa konsumen aliran data.
Versi 1.0.0-alpha08
16 Juni 2021
androidx.window:window-*:1.0.0-alpha08 dirilis. Versi 1.0.0-alpha08 berisi commit ini.
Fitur Baru
- Merilis artefak pengujian untuk mempermudah pengujian saat menggunakan WindowInfoRepository. Menggunakan WindowInfoRepository untuk mendapatkan informasi tentang DisplayFeatures dan WindowMetrics. (I57f66, Ida620)
Versi 1.0.0-alpha07
2 Juni 2021
androidx.window:window-*:1.0.0-alpha07 dirilis. Versi 1.0.0-alpha07 berisi commit ini.
Fitur Baru
- Memigrasikan library jendela inti ke Kotlin. Akan menggunakan coroutine dan fungsi penangguhan untuk menampilkan data asinkron ke depannya.
- Menambahkan WindowInfoRepo sebagai titik interaksi utama untuk mendapatkan WindowMetrics dan aliran data WindowLayoutInfo.
- Artefak
window-javabaru untuk menampilkan API yang cocok untuk Java guna mendaftarkan dan membatalkan pendaftaran callback. - Artefak
window-rxjava2danwindow-rxjava3baru untuk menampilkan API yang disesuaikan dengan RxJava.
Perubahan API
- Menambahkan
WindowServicesuntuk memberikan dependensi secara seragam.- Menambahkan API berbasis coroutine untuk menggunakan info tata letak jendela. (Iab70f)
- Memigrasikan library pengelola jendela inti ke Kotlin. (Icca34)
Perbaikan Bug
- Menambahkan class data baru untuk mewakili batasan fitur. (I6dcd1)
Versi 1.0.0-alpha06
5 Mei 2021
androidx.window:window:1.0.0-alpha06 dirilis. Versi 1.0.0-alpha06 berisi commit ini.
Fitur Baru
- Kami telah memulai migrasi ke Kotlin dan akan selesai pada rilis berikutnya.
- DeviceState telah dihapus dari API publik. Gunakan FoldingFeature sebagai gantinya.
- Kami telah menghapus
STATE_FLIPPEDdari status FoldingFeature karena saat ini tidak didukung oleh kasus penggunaan apa pun. - Kami juga telah menghapus API lain yang sudah tidak digunakan lagi.
Perubahan API
- Menambahkan Kotlin sebagai dependensi.
- Memigrasikan library inti ke Kotlin. (Idd995)
- Menghapus builder
DisplayFeature. (I61fa4) - Menghapus
DeviceStatedari API publik. GunakanFoldingFeaturesebagai gantinya. (Id6079) - Menghapus callback status perangkat dari ekstensi. (I5ea83)
- Menghapus
STATE_FLIPPEDdari FoldingFeature. (I9c4e1) - Menghapus metode pendaftaran yang tidak digunakan lagi. (Ib381b)
Versi 1.0.0-alpha05
24 Maret 2021
androidx.window:window:1.0.0-alpha05 dirilis. Versi 1.0.0-alpha05 berisi commit ini.
Fitur Baru
Kami telah menambahkan metode praktis ke FoldingFeature agar aplikasi dapat mengetahui apakah fitur tersebut memisahkan, menutupi, dan menentukan orientasi engsel. Kami juga menyembunyikan jenis engsel sehingga
Kami menghapus metode pembacaan sinkron dari WindowManager. Metode pembacaan sinkron rentan terhadap error karena ada kondisi race implisit. Daftarkan pemroses dan callback untuk menerima update pada WindowLayoutInfo.
Perubahan API
- Menambahkan metode praktis agar berfungsi dengan FoldingFeatures (Ie733f)
- Menghapus metode pembacaan sinkron dari WindowManager (I96fd4)
Version 1.0.0-alpha04
10 Maret 2021
androidx.window:window:1.0.0-alpha04 dirilis. Versi 1.0.0-alpha04 berisi commit ini.
Fitur Baru
- Memperbaiki bug saat tidak ada WindowLayoutInfo yang dimunculkan jika tidak ada implementasi OEM. Kini kami memunculkan WIndowLayoutInfo kosong.
- Memperbaiki bug yang statusnya tidak akan diperbarui dengan benar jika status engsel berubah saat aplikasi di latar belakang. Status kini harus konsisten.
- Memperbarui file proguard untuk mengabaikan peringatan dari dependensi runtime.
Perbaikan Bug
- Memberikan nilai kosong saat library OEM tidak ada. (Ide935)
Versi 1.0.0-alpha03
18 Februari 2021
androidx.window:window:1.0.0-alpha03 dirilis. Versi 1.0.0-alpha03 berisi commit ini.
Fitur Baru
- Memberikan nilai kosong untuk WindowLayoutInfo saat implementasi OEM kosong. Ini akan memudahkan penggunaan library di lebih banyak perangkat. Karena API bersifat asinkron, aplikasi tetap disarankan untuk menulis beberapa kode defensif dan memberikan nilai default setelah waktu tunggu. Kami tidak memiliki jaminan apa pun terkait implementasi OEM dan nilai awal mungkin tertunda.
Perbaikan Bug
- Memberikan nilai kosong saat library OEM tidak ada. (Ide935)
Versi 1.0.0-alpha02
27 Januari 2021
androidx.window:window:1.0.0-alpha02 dirilis. Versi 1.0.0-alpha02 berisi commit ini.
Fitur Baru
Kami tidak lagi menggunakan beberapa API untuk membantu menyederhanakan API dan mengurangi kesalahan. Beberapa contoh utama adalah menghapus operasi pembacaan sinkron dari WindowsManager dan tidak menggunakan DeviceState. Operasi pembacaan sinkron dapat menyebabkan kondisi race dan memiliki UI yang salah.
Kami telah mengonversi DisplayFeature ke antarmuka yang akan diterapkan fitur lainnya di masa mendatang. Fitur pertama kami adalah FoldingFeature yang kini merupakan representasi lipatan layar atau engsel. Fitur ini juga berisi status engsel yang menggantikan DeviceState.
WindowMetrics diperkenalkan di Android 11 untuk memberikan cara mudah kepada developer dalam mengkueri metrik tentang jendela, misalnya posisi dan ukurannya di layar dan inset sistem. Kami telah melakukan backporting API dalam rilis ini agar developer dapat memanfaatkan WindowMetrics dan terus mendukung versi Android yang lebih lama. WindowMetrics dapat diperoleh melalui
WindowManager#getCurrentWindowMetrics()dan API WindowManager#getMaximumWindowMetrics().
Perubahan API
- Tidak lagi menggunakan API yang akan dihapus di alfa berikutnya (Ib7cc4)
- Mengupdate
ExtensionInterfaceuntuk menerima referensi Aktivitas eksplisit. (I07ded) - Memperkenalkan WindowMetrics API. (I3ccee)
- Menghapus metode pembacaan sinkron dari WindowManager (I69983)
- Membuat paket ExtensionWindowBackend terlindungi. (Ied208)
Perbaikan Bug
- Mengupdate API
ExtensionInterfaceuntuk menerima konteks visual. (I8e827)
Kontribusi Eksternal
- Menggabungkan DeviceState and WindowLayoutInfo agar lebih mudah mengakses data. (Id34f4)
Versi 1.0.0-alpha01
27 Februari 2020
androidx.window:window:1.0.0-alpha01 dan androidx.window:window-extensions:1.0.0-alpha01
dirilis. Versi 1.0.0-alpha01 berisi commit berikut ini.
Ini adalah rilis pertama library Window Manager.
Fitur baru
DisplayFeature: API baru ini akan mengidentifikasi gangguan di permukaan layar datar dengan tampilan yang diperluas, misalnya engsel atau lipatanDeviceState: API baru ini akan memberitahukan posisi ponsel saat ini dari daftar posisi yang telah ditentukan (Misalnya,CLOSED,OPENED,HALF_OPENED, dll.)