WindowManager

Library Jetpack WindowManager memungkinkan developer aplikasi mendukung faktor bentuk perangkat dan lingkungan multi-aplikasi yang baru. Library ini menyediakan platform API umum untuk API versi 14 dan yang lebih baru. Rilis awal menargetkan perangkat foldable, tetapi versi mendatang akan diperluas ke lebih banyak jenis tampilan dan fitur jendela.
Update Terbaru Rilis Stabil Saat Ini Kandidat Rilis Berikutnya Rilis Beta Rilis Alfa
17 November 2021 - - 1.0.0-beta04 -

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.0.0-beta04"

    // For Java-friendly APIs to register and unregister callbacks
    implementation "androidx.window:window-java:1.0.0-beta04"

    // For RxJava2 integration
    implementation "androidx.window:window-rxjava2:1.0.0-beta04"

    // For RxJava3 integration
    implementation "androidx.window:window-rxjava3:1.0.0-beta04"

    // For testing
    implementation "androidx.window:window-testing:1.0.0-beta04"
}

Kotlin

dependencies {
    implementation("androidx.window:window:1.0.0-beta04")

    // For Java-friendly APIs to register and unregister callbacks
    implementation("androidx.window:window-java:1.0.0-beta04")

    // For RxJava2 integration
    implementation("androidx.window:window-rxjava2:1.0.0-beta04")

    // For RxJava3 integration
    implementation("androidx.window:window-rxjava3:1.0.0-beta04")

    // For testing
    implementation("androidx.window:window-testing:1.0.0-beta04")
}

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.0

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 berikut 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 berikut.

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 berikut 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 berikut.

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 berikut.

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 berikut.

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 berikut 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 berikut 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 berikut 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.)