WindowManager

Library Jetpack WindowManager memungkinkan developer aplikasi mendukung faktor bentuk perangkat dan lingkungan multi-aplikasi yang baru. Rilis awal menargetkan perangkat foldable, tetapi versi mendatang akan diperluas ke lebih banyak jenis tampilan dan fitur jendela.
Update Terbaru Rilis Stabil Kandidat Rilis Rilis Beta Rilis Alfa
16 Oktober 2024 1.3.0 - - 1.4.0-alpha05

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.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")
}

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.

Laporkan masalah baru

Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.

Versi 1.4

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 widthDp dan heightDp dari WindowMetrics.

Perubahan API

  • Menambahkan widthDp dan heightDp ke WindowMetrics. (Ide026)
  • Menghapus WindowInsets API 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 WindowSizeClass dari WindowMetrics. (874dba)
  • Ubah metode WindowSizeClass menjadi containsWidthDp, containsHeightDp, dan containsWindowSizeDp untuk kejelasan. (fa760d)
  • Konversi WindowAreaController ke class dasar abstrak. (I90893)

Perbaikan Bug

  • Menambahkan dukungan untuk batas relatif saat membuat FoldingFeature pengujian. (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

  • Menambahkan metode utilitas untuk mendapatkan WindowSizeClass dari WindowMetrics. (I83f1f)
  • Mengganti nama isAtLeast menjadi containsBreakpoint. (I85b47)
  • Tambahkan overload ke computeWindowSizeClass menggunakan float. (I3dcb2, b/364677934, b/364677802, b/364680886)

Perbaikan Bug

  • Menambahkan titik henti sementara yang tidak ada ke kumpulan titik henti sementara WindowSizeClass default.
  • 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 WindowSizeClass agar developer dapat menggunakan konstruktor mereka sendiri.
  • Tambahkan metode utilitas isAtLeast sehingga developer dapat memproses rentang nilai WindowSizeClass.
  • Tambahkan fungsi ekstensi di Set<WindowSizeClass> untuk menghitung kecocokan terbaik dari Set.
  • Tambahkan konstanta untuk titik henti sementara yang direkomendasikan Android.
  • Tambahkan titik henti sementara yang sesuai dengan titik henti sementara yang direkomendasikan Android.

Perubahan API

  • Perbarui nama metode batas untuk WindowSizeClass. (If89a6)
  • Memperbarui WindowSizeClass API untuk mendukung penambahan nilai titik henti sementara baru pada masa mendatang. Sebagai ganti batas absolut, kami menggunakan batas bawah dan merekomendasikan developer untuk menggunakan pemeriksaan batas bawah saat memproses WindowSizeClass. WindowWidthSizeClass dan WindowHeightSizeClass yang 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 lainnya.
  • Pemisah Interaktif memungkinkan aplikasi menampilkan pemisah 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 Tersemat memungkinkan aplikasi terus menerima update jendela aktivitas tersemat.
  • Menyemat Latar Belakang Animasi memungkinkan aplikasi menentukan latar belakang animasi, sehingga meningkatkan kualitas animasi transisi saat ActivityEmbedding digunakan.
  • Pengelolaan ActivityStack yang Ditingkatkan memungkinkan aplikasi memiliki kontrol yang lebih besar atas ActivityStacks saat ActivityEmbedding digunakan, termasuk:
  • Meluncurkan aktivitas ke ActivityStack yang ditentukan
  • Menyelesaikan ActivityStack

Perubahan API

  • WindowInfoTracker#supportedPostures API baru:

    • API untuk menentukan apakah perangkat mendukung mode TableTop untuk perangkat foldable. Menambahkan WindowAreaSessionPresenter#getWindow
  • Menambahkan API untuk mendukung penyematan ActivityStack:

    • Class SplitPinRule
    • SplitController#pinTopActivityStack
    • SplitController#unpinTopActivityStack
  • Menambahkan API untuk mengaktifkan dan mengonfigurasi pemisah interaktif

    • Class DividerAttributes
    • SplitAttributes.Builder#setDividerAttributes
  • Menambahkan API untuk menetapkan EmbeddingConfiguration dan DimAreaBehavior untuk dialog

    • Class EmbeddingConfiguration
    • Class DimAreaBehavior
    • ActivityEmbeddingController#setEmbeddingConfiguration
  • Menambahkan API untuk menerima update info jendela aktivitas tersemat

    • Class EmbeddedActivityWindowInfo
    • ActivityEmbeddingController#embeddedActivityWindowInfo
  • Menambahkan API untuk menetapkan latar belakang animasi penyematan

    • EmbeddingAnimationBackground
    • SplitAttributes.Builder#setAnimationBackground
  • Menambahkan API untuk menyelesaikan ActivityStacks

    • ActivityEmbeddingController#finishActivityStacks
  • Menambahkan API untuk menetapkan peluncuran ActivityStack

    • ActivityEmbeddingOptions#setLaunchingActivityStack
  • API berikut sudah stabil dan tidak lagi bersifat eksperimental:

    • ActivityEmbeddingController#invalidateVisibleActivityStacks (dipindahkan dari SplitController#invalidateTopVisibleSplitAttributes)
    • ActivityEmbeddingController#getActivityStack
    • SplitController#updateSplitAttributes
  • Menambahkan API untuk 1.4. (I56774)

Perbaikan Bug

  • Memperbaiki bug pada perangkat tertentu yang menampilkan UNAVAILABLE, bukan ACTIVE, saat sesi aktif.
  • Menghapus dukungan untuk transferActivityToWindowArea di perangkat dengan vendorApiLevel 2 karena dukungan API yang tidak stabil.
  • Memperkenalkan API untuk mengaktifkan tarik ke layar penuh untuk pemisah yang dapat ditarik Penyematan Aktivitas. (I645c9)
  • Mengizinkan aplikasi menonaktifkan animasi ActivityEmbedding melalui parameter animasi untuk SplitAttributes. (Idc01a)
  • Menghapus garis besar manual akses 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)
  • Mengizinkan ekstensi mengambil parameter animasi untuk SplitAttributes sehingga 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 setLaunchingActivityStack dari API eksperimental (I191cf)
  • Memperkenalkan ActivityEmbeddingController#embeddedActivityWindowInfo (I24312)
  • Menghentikan penggunaan #getToken dan menambahkan #getActivityStackToken (Ie0471)
  • Memperkenalkan adaptor callback untuk API alur embeddedActivityWindowInfo (Ida77f)
  • Menambahkan adaptor callback untuk API alur overlayInfo (I7264f)
  • Memperkenalkan WindowSdkExtensionsRule untuk mengganti extensionsVersion untuk pengujian. (Ifb928)
  • - Memigrasikan #setLaunchingActivityStack ke Paket agar kompatibel dengan penggunaan ActivityOptionsCompat.
    • Pengguna harus meneruskan activityOptions.toBundle, bukan ActvityOptions itu sendiri.
    • Menghapus #setLaunchingActivityStack(Activity). Pengguna harus bermigrasi untuk menggunakan ActivityEmbeddingController#getActivityStac(Activity) guna mendapatkan ActivityStack, dan meneruskan ActivityStack ke #setLaunchingActivityStack. (Ie0ccc)
  • - Memperkenalkan ActivityStack.Token dan SpltInfo.Token sebagai ID untuk berkomunikasi antara WM Jetpack dan ekstensi.
    • Menghentikan penggunaan/Mengganti API untuk mengambil/menampilkan Token, bukan IBinder. (I12b24)
  • - Memperkenalkan ActivityEmbeddingController#invalidateVisibleActivityStacks
    • Menghapus SplitController#invalidateTopVisibleSplitAttributes karena fitur digabungkan ke #invalidateVisibleActivityStacks (I02ef5)
  • - Menambahkan API untuk menetapkan konfigurasi penyematan. (I59a4a)
  • - Menambahkan pin/melepas pin API ActivityStack androidx.Window teratas
    • Memperbarui aplikasi demo untuk mengizinkan penyematan/pembongkaran semat ActivityStack atas (I24dd3)
  • Menambahkan kembali #finishActivityStacks dan ActivityEmbeddingOptions (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 WindowSizeClass kustom. (Id1143)

Perbaikan Bug

  • Memperbaiki KotlinReflectionInternalError yang 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 WindowSizeClassUtil menjadi metode yang lebih terfokus. (Ie9292)
  • Memulihkan WindowSizeClass#compute (I21355, b/324293374)

Perbaikan Bug

  • Memperbaiki error saat konteks yang diberikan tidak dibuka 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 platform 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 WindowSizeClass dari kumpulan. Menambahkan fungsi penskoran eksperimental sehingga developer dapat menulis pemilih mereka sendiri. Tambahkan fungsi ekstensi pemilih untuk memilih WindowSizeClass terluas dalam batas tertentu. (I0c944)
  • Buka konstruktor WindowSizeClass agar titik henti sementara kustom dapat ditambahkan. (Ic1ff3)
  • Tambahkan fungsi praktis untuk membuat class ukuran dari lebar, tinggi, dan kepadatan. (If67f4)

Perbaikan Bug

  • Memperbaiki pengecualian saat nilai float terpotong 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.
  • API pengujian untuk membuat FoldingFeature kini stabil.
  • API pengujian untuk menyiapkan nilai ActivityEmbedding palsu kini stabil.
  • WindowLayoutInfoPublisherRule kini melaporkan penggantian saat mendapatkan nilai dari UiContext.
  • WindowInfoTracker melaporkan data fitur lipat ke parameter UiContext.
  • Mengekspos Versi Ekstensi di perangkat.
  • Konstanta WindowProperties untuk penggantian per aplikasi pengguna:
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE — Memberi tahu sistem bahwa aplikasi telah memilih untuk 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 untuk 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.
  • API pengujian untuk membuat FoldingFeature kini stabil.
  • API pengujian untuk menyiapkan nilai ActivityEmbedding palsu kini stabil.
  • WindowLayoutInfoPublisherRule kini melaporkan penggantian saat mendapatkan nilai dari UiContext.
  • WindowInfoTracker melaporkan data fitur lipat ke parameter UiContext.
  • 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.
  • API pengujian untuk membuat FoldingFeature kini stabil.
  • API pengujian untuk menyiapkan nilai ActivityEmbedding palsu kini stabil.
  • WindowLayoutInfoPublisherRule kini melaporkan penggantian saat mendapatkan nilai dari UiContext.
  • WindowInfoTracker melaporkan data fitur lipat ke parameter UiContext.
  • 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

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 RequiresApi untuk API yang memerlukan versi ekstensi tertentu agar berfungsi dengan benar.
  • Menambahkan API untuk mengekspos versi ekstensi di perangkat.

Perubahan API

  • Menambahkan anotasi versi ekstensi SDK jendela yang diperlukan di API publik.
    • Hapus isXXXSupported di komponen Penyematan Aktivitas. (Ie3dae)
  • Memperkenalkan WindowSdkExtensions untuk melaporkan versi ekstensi di perangkat.
    • Memperkenalkan RequiresWindowSdkExtension untuk menganotasi versi ekstensi minimum yang diperlukan. (I05fd4)
  • Membuat WindowAreaInfo#getCapability non-nullable. (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.
  • API pengujian untuk membuat FoldingFeature kini stabil.
  • API pengujian untuk menyiapkan nilai ActivityEmbedding palsu kini stabil.
  • WindowLayoutInfoPublisherRule kini melaporkan penggantian saat mendapatkan nilai dari UiContext.
  • WindowInfoTracker melaporkan data fitur lipat ke parameter UiContext.

Perubahan API

  • Menandai WindowArea API sebagai eksperimental untuk memungkinkan perubahan API berlanjut untuk rilis stabil di 1.3 (I857f5)
  • Mengupdate 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 platform API.
  • Menambahkan API untuk mendukung tampilan serentak.
  • Menambahkan properti untuk memilih tidak ikut penggantian pengubahan ukuran paksa.
  • Menambahkan properti untuk memilih tidak mengaktifkan penggantian rasio lebar tinggi minimum.
  • Menstabilkan ActivityEmbeddingRule untuk mendukung pengujian unit di sekitar Penyematan Aktivitas.

Perubahan API

  • Menghapus API yang tidak digunakan lagi (I18d39)
  • Menambahkan dukungan untuk tampilan serentak. (Ifcbb0)

Perbaikan Bug

  • Menambahkan properti kompatibilitas untuk menonaktifkan penggantian ukuran paksa (Ie7ab1)
  • Menghapus SESSION_STATE_CONTENT_INVISIBLE dari antarmuka ekstensi. (I6ed19)
  • Menstabilkan ActivityEmbeddingRule untuk mendukung pengujian unit di sekitar penyematan Aktivitas. (I8d6b6)
  • Menambahkan properti kompatibilitas pilihan tidak ikut untuk penggantian rasio aspek minimum. (I66390)
  • Menghapus WindowArea API 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_ACTIVE untuk menunjukkan bahwa fitur sudah aktif. (I62bc3)
  • Menambahkan RearDisplayPresentationMode API (I0401c)
  • Menghapus API warna latar belakang untuk stabil. (I34c3e)
  • Sembunyikan Window Area API. (I39de0)
  • Tambahkan metode untuk mengganti SplitInfo di SplitController. Menambahkan metode pengujian untuk membuat ganda untuk SplitInfo dan ActivityStack. (Icd69f)
  • Buat tag bersifat opsional untuk ActivityRule.Builder. (Ib0b44)
  • Menghapus RatioSplitType, ExpandContainersSplit, dan HingeSplitType. Sekarang, nilainya adalah SplitType.
    • Mengganti #splitEqually(), #expandContainers(), dan #splitByHinge menjadi konstanta SplitType SPLIT_TYPE_EQUAL, SPLIT_TYPE_EXPAND, dan SPLIT_TYPE_HINGE
    • Hapus fungsi untuk menetapkan jenis penggantian jenis pemisahan engsel. Jika jenis pemisahan engsel tidak dapat diterapkan karena status perangkat atau jendela saat ini, jenis tersebut akan kembali untuk membagi penampung tugas induk secara merata. Gunakan SplitController#setSplitAttributesCalculator untuk menyesuaikan jenis pemisahan penggantian. (Ifcc59)
  • Menghentikan penggunaan add/removeSplitCallback
    • Memindahkan add/removeSplitCallback ke SplitControllerCallbackAdapter
    • Menambahkan dukungan Flow untuk mendapatkan daftar SplitInfo (I7f1b6)
  • Menambahkan aturan pengujian untuk ActivityEmbeddingController (I42e9b)
  • Mengganti nama ActivityOptionsCompat menjadi ActivityEmbeddingOptions (I89301)
  • Menambahkan splitSupportStatus untuk menunjukkan apakah penyematan Aktivitas tersedia. (I10024)
  • Memperkenalkan SplitAttributes.BackgroundColor untuk merepresentasikan nilai DEFAULT dengan lebih baik. Menjelaskan bahwa warna latar belakang animasi non-buram tidak didukung, sehingga warna non-buram apa pun akan diperlakukan sebagai default, yang berarti menggunakan warna latar belakang jendela tema saat ini. (Ic6b95)
  • Mengganti alwaysAllow() dan alwaysDisallow() dengan ALWAYS_ALLOW dan ALWAYS_DISALLOW. (I3057b)
  • Menambahkan API untuk SplitRule, SplitAttributes, SplitAttributesCalculator. (I92d23)
  • Menambahkan TestActivityStack untuk membuat ActivityStack guna pengujian
    • Tambahkan TestSplitInfo untuk membuat SplitInfo untuk pengujian. (I8e779)
  • Menambahkan cara untuk membuat SplitAttributesCalculatorParams palsu sehingga developer dapat memverifikasi SplitAttributesCalculator yang disesuaikan (Id4a6e)
  • Menambahkan WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context) dan WindowMetricsCalculator#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 lipat yang tidak ditentukan.
  • Penggantian dengan WindowLayoutInfoPublishRule akan mengganti semua nilai windowLayoutInfo, termasuk API berbasis Konteks.

Perubahan API

  • Menambahkan konstanta untuk fitur lipat tengah yang tidak ditentukan. (I7530c)

Perbaikan Bug

  • Update WindowLayoutInfoPublishRule untuk mendukung penggantian pada WindowLayoutInfo berbasis Context. (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 di sekitar Penyematan Aktivitas dan WindowLayoutInfoTracker. ActivityEmbeddingRule telah dipromosikan ke stabil. WindowMetricsCalculatorRule telah dipromosikan ke stabil. Fungsi utilitas untuk membuat FoldingFeature untuk pengujian telah dipromosikan ke stabil.

Perubahan API

  • Menstabilkan ActivityEmbeddingRule untuk mendukung pengujian unit di sekitar penyematan Aktivitas. (I8d6b6)
  • WindowMetrisCalculatorTestRule stabil dan memungkinkan metrik stub untuk pengujian JVM. Sebaiknya gunakan emulator untuk mendapatkan hasil yang akurat.
  • Menstabilkan API pengujian untuk WindowLayoutInfo guna mendukung pengujian JVM. (Ie036e)
  • Tambahkan IntRange untuk nilai fitur lipat 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_ENABLED sebagai properti boolean dari tag <application> dalam manifes aplikasi.
  • Menghentikan penggunaan isSplitSupported dan menggantinya dengan splitSupportStatus untuk memberikan informasi yang lebih mendetail tentang alasan fitur pemisahan tidak tersedia.
  • Menambahkan class bertingkat SplitController.SplitSupportStatus untuk memberikan konstanta status bagi properti splitSupportStatus.
  • Memfaktorkan ulang SplitController menjadi beberapa modul:
    • Modul ActivityEmbeddingController untuk API terkait Activity atau ActivityStack.
    • isActivityEmbedded telah dipindahkan dari SplitController ke ActivityEmbeddingController.
    • Modul RuleController untuk operasi terkait EmbeddingRule:
    • Menghapus SplitController API:
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • Menambahkan RuleController API:
    • 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.
  • Semua modul memerlukan konteks untuk diinisialisasi oleh metode #getInstance(), termasuk:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Menambahkan class EmbeddingAspectRatio untuk menentukan konstanta perilaku seperti enum yang terkait dengan rasio aspek tampilan.
  • Menambahkan class SplitAttributes untuk menentukan tata letak terpisah.
  • Menambahkan fungsi kalkulator SplitAttributes ke SplitController untuk menyesuaikan tata letak pemisahan:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() untuk memeriksa apakah SplitAttributesCalculator API didukung di perangkat
  • Menambahkan kolom EmbeddingRule#tag.
  • Update API di SplitRule:
    • Menambahkan defaultSplitAttributes — Menentukan tata letak pemisahan default pemisahan; menggantikan splitRatio dan layoutDirection.
    • Menambahkan terjemahan properti XML splitRatio dan splitLayoutDirection ke defaultSplitAttributes.
    • Mengubah definisi dimensi minimum untuk menggunakan piksel kepadatan mandiri (dp), bukan piksel.
    • Menambahkan minHeightDp dengan nilai default 600dp.
    • Mengubah minWidth menjadi minWidthDp dengan nilai default 600dp.
    • Mengubah minSmallestWidth menjadi minSmallestWidthDp dengan nilai default 600dp.
    • Menambahkan maxAspectRatioInHorizontal dengan nilai default ALWAYS_ALLOW.
    • Menambahkan maxAspectRatioInPortrait dengan nilai default 1,4.
    • Menentukan class bertingkat FinishBehavior untuk mengganti konstanta perilaku selesai.
    • Menerapkan perubahan properti ke class bertingkat Builder dari SplitPairRule dan SplitPlaceholderRule.
  • Mengganti SplitInfo#getSplitRatio() dengan SplitInfo#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_ENABLED ke 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. }
  • Migrasi SplitController:
    • SplitController.getInstance() berubah menjadi SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) berubah menjadi RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • SplitController.getInstance().isActivityEmbedded(Activity) berubah menjadi ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) berubah menjadi RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) berubah menjadi RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() berubah menjadi RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() berubah menjadi RuleController.getInstance(Context).getRules().
  • Migrasi properti SplitRule:
    • minWidth dan minSmallestWidth kini menggunakan satuan dp, bukan piksel. Aplikasi dapat menggunakan panggilan berikut: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) atau cukup bagi minWith dalam piksel dengan displayMetrics#density.
  • Konstanta perilaku selesai harus dimigrasikan ke konstanta class seperti enum FinishBehavior:
    • FINISH_NEVER berubah menjadi FinishBehavior.NEVER.
    • FINISH_ALWAYS berubah menjadi FinishBehavior.ALWAYS.
    • FINISH_ADJACENT berubah menjadi FinishBehavior.ADJACENT.
  • Arah tata letak harus dimigrasikan ke SplitAttributes.LayoutDirection:
    • ltr berubah menjadi SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl berubah menjadi SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale berubah menjadi SplitAttributes.LayoutDirection.LOCALE.
    • splitRatio harus dimigrasikan ke SplitAttributes.SplitType.ratio(splitRatio).
  • Migrasi SplitPairRule.Builder:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) berubah menjadi kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) dan setSplitRatio(ratio) berubah menjadi kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondary dan setFinishSecondaryWithPrimary menggunakan konstanta seperti enum FinishBehavior. Lihat “Migrasi SplitRule” untuk mengetahui detailnya.
    • Gunakan setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) untuk menampilkan pemisahan di perangkat potret.
  • Migrasi SplitPlaceholder.Builder:
    • Hanya memiliki parameter filters dan placeholderIntent. Properti lainnya dipindahkan ke penyetel. Lihat “Migrasi SplitPairRule.Builder” untuk mengetahui detailnya.
    • setFinishPrimaryWithPlaceholder menggunakan konstanta seperti enum FinishBehavior. Lihat “Migrasi SplitRule” untuk mengetahui detailnya.
    • setLayoutDirection(layoutDirection) dan setSplitRatio(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.

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 ActivityEmbedding sebagai 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_ENABLED sebagai properti boolean dari tag <application> dalam manifes aplikasi.
  • Menghentikan penggunaan isSplitSupported dan menggantinya dengan splitSupportStatus untuk memberikan informasi yang lebih mendetail tentang alasan fitur pemisahan tidak tersedia.
  • Menambahkan class bertingkat SplitController.SplitSupportStatus untuk memberikan konstanta status bagi properti splitSupportStatus.
  • Memfaktorkan ulang SplitController menjadi beberapa modul:
    • Modul ActivityEmbeddingController untuk API terkait Activity atau ActivityStack.
    • isActivityEmbedded telah dipindahkan dari SplitController ke ActivityEmbeddingController.
    • Modul RuleController untuk operasi terkait EmbeddingRule:
    • API SplitController yang dihapus:
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • Menambahkan RuleController API:
      • 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.
  • Semua modul memerlukan konteks untuk diinisialisasi oleh metode #getInstance(), termasuk:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Menambahkan class EmbeddingAspectRatio untuk menentukan konstanta perilaku seperti enum yang terkait dengan rasio aspek tampilan.
  • Menambahkan class SplitAttributes untuk menentukan tata letak terpisah.
  • Menambahkan fungsi kalkulator SplitAttributes ke SplitController untuk menyesuaikan tata letak pemisahan:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() untuk memeriksa apakah SplitAttributesCalculator API didukung di perangkat
  • Menambahkan kolom EmbeddingRule#tag.
  • Update API di SplitRule:
    • Menambahkan defaultSplitAttributes — Menentukan tata letak pemisahan default pemisahan; menggantikan splitRatio dan layoutDirection.
    • Menambahkan terjemahan properti XML splitRatio dan splitLayoutDirection ke defaultSplitAttributes.
    • Mengubah definisi dimensi minimum untuk menggunakan piksel kepadatan mandiri (dp), bukan piksel.
    • Menambahkan minHeightDp dengan nilai default 600dp.
    • Mengubah minWidth menjadi minWidthDp dengan nilai default 600dp.
    • Mengubah minSmallestWidth menjadi minSmallestWidthDp dengan nilai default 600dp.
    • Menambahkan maxAspectRatioInHorizontal dengan nilai default ALWAYS_ALLOW.
    • Menambahkan maxAspectRatioInPortrait dengan nilai default 1.4.
    • Menentukan class bertingkat FinishBehavior untuk mengganti konstanta perilaku selesai.
    • Menerapkan perubahan properti ke class bertingkat Builder dari SplitPairRule dan SplitPlaceholderRule.
  • Mengganti SplitInfo#getSplitRatio() dengan SplitInfo#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_ENABLED ke 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. }
  • Migrasi SplitController:
    • SplitController.getInstance() berubah menjadi SplitController.getInstance(Context).
    • SplitController.initialize(Context, @ResId int) berubah menjadi RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)).
    • SplitController.getInstance().isActivityEmbedded(Activity) berubah menjadi ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity).
    • SplitController.getInstance().registerRule(rule) berubah menjadi RuleController.getInstance(Context).addRule(rule).
    • SplitController.getInstance().unregisterRule(rule) berubah menjadi RuleController.getInstance(Context).removeRule(rule).
    • SplitController.getInstance().clearRegisteredRules() berubah menjadi RuleController.getInstance(Context).clearRules().
    • SplitController.getInstance().getSplitRules() berubah menjadi RuleController.getInstance(Context).getRules().
  • Migrasi properti SplitRule:
    • minWidth dan minSmallestWidth kini menggunakan satuan dp, bukan piksel. Aplikasi dapat menggunakan panggilan berikut: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) atau cukup bagi minWith dalam piksel dengan displayMetrics#density.
  • Konstanta perilaku selesai harus dimigrasikan ke konstanta class seperti enum FinishBehavior:
    • FINISH_NEVER berubah menjadi FinishBehavior.NEVER.
    • FINISH_ALWAYS berubah menjadi FinishBehavior.ALWAYS.
    • FINISH_ADJACENT berubah menjadi FinishBehavior.ADJACENT.
  • Arah tata letak harus dimigrasikan ke SplitAttributes.LayoutDirection:
    • ltr berubah menjadi SplitAttributes.LayoutDirection.LEFT_TO_RIGHT.
    • rtl berubah menjadi SplitAttributes.LayoutDirection.RIGHT_TO_LEFT.
    • locale berubah menjadi SplitAttributes.LayoutDirection.LOCALE.
    • splitRatio harus dimigrasikan ke SplitAttributes.SplitType.ratio(splitRatio).
  • Migrasi SplitPairRule.Builder:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) berubah menjadi kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) dan setSplitRatio(ratio) berubah menjadi kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondary dan setFinishSecondaryWithPrimary menggunakan konstanta seperti enum FinishBehavior. Lihat “Migrasi SplitRule” untuk mengetahui detailnya.
    • Gunakan setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) untuk menampilkan pemisahan di perangkat potret.
  • Migrasi SplitPlaceholder.Builder:
    • Hanya memiliki parameter filters dan placeholderIntent. Properti lainnya dipindahkan ke penyetel. Lihat “Migrasi SplitPairRule.Builder” untuk mengetahui detailnya.
    • setFinishPrimaryWithPlaceholder menggunakan konstanta seperti enum FinishBehavior. Lihat “Migrasi SplitRule” untuk mengetahui detailnya.
    • setLayoutDirection(layoutDirection) dan setSplitRatio(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.

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 WindowLayoutInfo dari konteks UI.

Perubahan API

  • Menambahkan splitSupportStatus untuk menunjukkan apakah penyematan Aktivitas tersedia. (I10024)
  • Membuat Konteks UI WindowLayoutInfo API sebagai eksperimental. (I58ee0)
  • Memperkenalkan WindowAreaController dan API untuk mengaktifkan Mode RearDisplay guna 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:
    1. Mengganti alwaysAllow() dan alwaysDisallow() dengan ALWAYS_ALLOW dan ALWAYS_DISALLOW.
    2. Memperbarui dokumentasi API @see dengan dokumentasi mandiri. (I3057b)
  • Konstruktor berikut dihapus dari API publik karena seharusnya tidak dipanggil oleh aplikasi.
    • Konstruktor SplitInfo
    • Konstruktor ActivityStack (Ide534)
  • SplitRule kini menggunakan maxAspectRatioInPortrait/Landscape. Hal ini hanya memungkinkan pemisahan aktivitas jika rasio aspek batas induk lebih kecil atau sama dengan maxAspectRatio yang diminta. (Ia5990)
  • Mengubah RuleController#parseRules menjadi statis (I785df)
  • Meningkatkan API terkait ActivityEmbedding
    1. Menyelaraskan penamaan API - Menggunakan tambahkan/hapus untuk beberapa instance:
    2. registerRule berubah menjadi addRule
    3. unregisterRule berubah menjadi removeRule
    4. Mengganti getSplitRules dengan getRules karena ActivityRule bukan aturan pemisahan
    5. Menambahkan RuleController#setRules untuk menetapkan sekumpulan aturan
    6. Mengekstrak API terkait aturan dari SplitController ke RuleController singleton. API tersebut adalah:
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. Mengekstrak #isActivityEmbedded dari SplitController ke ActivityEmbeddingController singleton. API tersebut adalah:
    14. isActivityEmbedded
    15. Menghapus SplitController#initialize. Untuk menetapkan aturan dari file XML, gunakan RuleController#parseRules dan #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)
    16. Kita tidak lagi membedakan aturan statis dengan aturan runtime. Meskipun demikian, memanggil hasil #clearRules akan menghapus semua aturan, terlepas dari aturan tersebut terdaftar dengan definisi aturan XML statis atau saat runtime. Untuk mempertahankan perilaku lama SplitController#clearRegisteredRules, panggil RuleController#parseRules dengan ID resource XML dan panggil RuleController#setRules untuk 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:
    1. Menggunakan dimensi min dalam DP, bukan piksel untuk SplitRule.
    2. Memfaktorkan ulang untuk SplitRule Builder agar menggunakan dimensi min sebagai opsional. (I95f17)
  • Meneruskan Konteks untuk melakukan inisialisasi SplitController (I42549)
  • Mengganti nama SplitRule#layoutDir menjadi #layoutDirection, dan SplitRule Builder#setLayoutDir menjadi Builder#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 ActivityStack kosong untuk ActivityEmbedding.
  • Menghapus tag API eksperimental dari ActivityEmbedding API.
  • Menyembunyikan konstruktor ActivityRule karena Builder adalah cara yang direkomendasikan untuk membuat.
  • Menambahkan metode eksperimental untuk mendapatkan WindowInsets di WindowMetrics.
  • Mengupdate SplitPlaceholderFinishBehavior agar placeholder tidak diselesaikan. Menyelesaikan placeholder yang menyebabkan beberapa perilaku membingungkan.

Perubahan API

  • Membuat val isEmpty menjadi publik untuk menggantikan fun isEmpty.
  • Mengganti nama aktivitas parameter ActivityStack menjadi activitiesInProcess. (Ia5055)
  • Menghapus ActivityFilter#matchesClassName dan ActivityFilter#matchesClassNameOrWildCard karena keduanya membingungkan.
  • Menambahkan ActivityFilter#componentName abd ActivityFilter#intentAction untuk memungkinkan pemanggil membedakan filter yang berbeda (I41f22)
  • Menghapus API @Deprecated dari API eksperimental (I216b3)
  • Menghapus @ExperimentalWindowApi untuk Activity Embedding API (I69ebe)
  • Menyembunyikan konstruktor ActivityRule dan menggunakan Builder sebagai gantinya. (If4eb6)
  • Menambahkan API untuk memeriksa apakah Aktivitas merupakan bagian dari ActivityFilter. (Ia43cf)
  • Mengupdate file API untuk menunjukkan perubahan di class WindowMetrics dan WindowMetricsCalculatorCompat (I667fe)
  • Mengupdate ActivityEmbedding Properti Javadoc dan nama class (Ia1386)
  • Menambahkan nama tag properti ActivityEmbedding yang akan digunakan di AndroidManifest.xml (Id1ad4)
  • Menambahkan API baru SplitPlaceholderFinishBehavior dan SplitPlaceholderRule.finishPrimaryWithPlaceholderyang menggantikan SplitPlaceholderRule.finishPrimaryWithSecondary lama yang menentukan kapan aktivitas placeholder selesai dan bagaimana aktivitas terkait dalam Penyematan Aktivitas harus berperilaku. (I64647)

Perbaikan Bug

  • Memperkenalkan WindowAreaController dan API untuk mengaktifkan Mode RearDisplay guna 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 WindowInfoTracker dan FoldingFeature. WindowMetricsCalculator untuk 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 WindowMetrics saat 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

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 FoldingFeature menjadi antarmuka.

Perubahan API

  • Menghapus konstanta lama dan menjadikan FoldFeature sebagai antarmuka. (I9a2d5)

Perbaikan Bug

  • Library yang bergantung pada library Test Core telah diupgrade ke versi 1.4.0 dan 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 occlusionMode menjadi occlusionType.

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-java baru untuk menampilkan API yang cocok untuk Java guna mendaftarkan dan membatalkan pendaftaran callback.
  • Artefak window-rxjava2 dan window-rxjava3 baru untuk menampilkan API yang disesuaikan dengan RxJava.

Perubahan API

  • Menambahkan WindowServices untuk 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_FLIPPED dari 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 DeviceState dari API publik. Gunakan FoldingFeature sebagai gantinya. (Id6079)
  • Menghapus callback status perangkat dari ekstensi. (I5ea83)
  • Menghapus STATE_FLIPPED dari 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 ExtensionInterface untuk 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 ExtensionInterface untuk 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 lipatan
  • DeviceState: API baru ini akan memberitahukan posisi ponsel saat ini dari daftar posisi yang telah ditentukan (Misalnya, CLOSED, OPENED, HALF_OPENED, dll.)