Jendela desktop memungkinkan pengguna menjalankan beberapa aplikasi secara bersamaan di jendela aplikasi yang dapat diubah ukurannya untuk pengalaman serbaguna seperti desktop.
Pada gambar 1, Anda dapat melihat pengaturan layar dengan jendela desktop yang diaktifkan. Hal-hal yang perlu diperhatikan:
- Pengguna dapat menjalankan beberapa aplikasi secara berdampingan.
- Taskbar berada di posisi tetap di bagian bawah layar yang menampilkan aplikasi yang sedang berjalan. Pengguna dapat menyematkan aplikasi untuk akses cepat.
- Panel header baru yang dapat disesuaikan menghiasi bagian atas setiap jendela dengan kontrol seperti perkecil dan maksimalkan.
Secara default, aplikasi akan dibuka dengan layar penuh di tablet Android. Untuk meluncurkan aplikasi dalam jendela desktop, tekan lama handle jendela di bagian atas layar, lalu tarik handle dalam UI, seperti yang terlihat pada gambar 2.
Saat aplikasi terbuka di jendela desktop, aplikasi lain terbuka di jendela desktop sebagai ya.
Pengguna juga dapat memanggil jendela desktop dari menu yang muncul di bawah tuas jendela saat Anda mengetuk atau mengklik tuas atau menggunakan pintasan keyboard Tombol meta (Windows, Command, atau Penelusuran) + Ctrl + Down.
Pengguna keluar dari jendela desktop dengan menutup semua jendela yang aktif atau dengan menarik handel jendela di bagian atas jendela desktop dan menarik aplikasi ke bagian atas layar. Pintasan keyboard Meta + H juga akan keluar jendela desktop dan menjalankan aplikasi layar penuh lagi.
Untuk kembali ke jendela desktop, ketuk atau klik kartu ruang desktop di layar Terbaru.
Mode kompatibilitas dan kemampuan untuk diubah ukurannya
Di windowing desktop, aplikasi dengan orientasi terkunci dapat diubah ukurannya secara bebas. Artinya, meskipun aktivitas terkunci ke orientasi potret, pengguna masih dapat mengubah ukuran aplikasi ke jendela orientasi lanskap.
Aplikasi yang dinyatakan sebagai tidak dapat diubah ukurannya (yaitu,
resizableActivity = false
)
menskala UI dengan tetap mempertahankan rasio aspek yang sama.
Aplikasi kamera yang mengunci orientasi atau dideklarasikan sebagai tidak dapat diubah ukurannya memiliki perlakuan khusus untuk jendela bidik kamera mereka: jendela sepenuhnya dapat diubah ukurannya, tetapi jendela bidik mempertahankan rasio aspek yang sama. Dengan mengasumsikan aplikasi selalu berjalan dalam mode potret atau lanskap, aplikasi akan melakukan hardcode atau membuat asumsi yang menyebabkan kesalahan penghitungan pratinjau atau orientasi gambar yang diambil atau rasio aspek yang menghasilkan gambar yang diregangkan, miring, atau terbalik.
Hingga aplikasi siap untuk menerapkan jendela bidik kamera yang sepenuhnya responsif, perlakuan khusus memberikan pengalaman pengguna yang lebih mendasar yang mengurangi akibat dari asumsi yang keliru.
Untuk mempelajari lebih lanjut mode kompatibilitas untuk aplikasi kamera, lihat Mode kompatibilitas perangkat.
Inset header yang dapat disesuaikan
Semua aplikasi yang berjalan dalam jendela desktop memiliki panel header, bahkan dalam
mode imersif.
Pastikan konten aplikasi tidak terhalang oleh kolom header.
Panel header adalah jenis inset kolom teks:
androidx.compose.foundation.layout.WindowInsets.Companion.captionBar()
;
dalam tampilan, WindowInsets.Type.captionBar()
,
yang merupakan bagian dari panel sistem.
Anda dapat mempelajari lebih lanjut cara menangani inset di Menampilkan konten layar penuh di aplikasi Anda dan menangani inset jendela di Compose.
Bilah header juga dapat disesuaikan. Android 15 memperkenalkan jenis tampilan
APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND
untuk membuat
panel header transparan agar aplikasi dapat menggambar konten kustom di dalam
panel header.
Aplikasi kemudian bertanggung jawab untuk menata gaya bagian atas kontennya agar terlihat seperti kolom teks (latar belakang, konten kustom, dan sebagainya) dengan pengecualian elemen teks sistem (tombol tutup dan maksimalkan), yang digambar oleh sistem di kolom teks transparan di atas aplikasi.
Aplikasi dapat mengubah tampilan elemen sistem di dalam teks untuk
tema terang dan gelap menggunakan APPEARANCE_LIGHT_CAPTION_BARS
,
mirip dengan bagaimana status bar
dan {i>navigationbar<i} dialihkan.
Android 15 juga memperkenalkan metode
WindowInsets#getBoundingRects()
yang memungkinkan aplikasi melakukan introspeksi inset panel teks secara lebih mendetail.
Aplikasi dapat membedakan antara area tempat sistem menggambar elemen sistem dan
area yang tidak dimanfaatkan tempat aplikasi dapat menempatkan konten kustom tanpa elemen sistem yang tumpang-tindih.
Daftar objek Rect
yang ditampilkan oleh API menunjukkan region sistem yang
harus dihindari. Ruang yang tersisa (dihitung dengan mengurangi persegi panjang
dari Insets panel teks) adalah tempat aplikasi dapat menggambar tanpa
tumpang-tindih elemen sistem dan dengan kemampuan untuk menerima input.
Dukungan multitasking dan multitasking
{i>Multitasking<i} adalah inti dari {i>windowing<i} desktop, dan memungkinkan aplikasi Anda dapat sangat meningkatkan produktivitas pengguna.
Android 15 memperkenalkan PROPERTI_SUPPORTS_MULTI_INSTANCE_SYSTEM_UI, aplikasi mana yang dapat disetel untuk menetapkan bahwa UI sistem harus ditampilkan untuk aplikasi memungkinkannya untuk diluncurkan sebagai beberapa instance.
Mengelola instance aplikasi dengan gestur tarik
Dalam mode multi-aplikasi, pengguna dapat memulai instance aplikasi baru dengan menarik elemen tampilan dari jendela aplikasi. Pengguna juga dapat memindahkan elemen di antara instance aplikasi yang sama.
Android 15 memperkenalkan dua flag untuk menyesuaikan perilaku tarik lalu lepas:
DRAG_FLAG_START_INTENT_SENDER_ON_UNHANDLED_DRAG
: Menunjukkan bahwa tarik yang tidak ditangani harus didelegasikan ke sistem untuk dimulai jika tidak ada jendela yang terlihat yang menangani lepas. Saat menggunakan tanda ini, pemanggil harus memberikanClipData
denganItem
yang berisiIntentSender
tidak dapat diubah menjadi aktivitas yang akan diluncurkan (lihatClipData.Item.Builder#setIntentSender()
). Sistem dapat meluncurkan intent atau tidak berdasarkan faktor seperti layar saat ini ukuran atau mode windowing. Jika sistem tidak meluncurkan intent, intent-nya akan dibatalkan dengan menggunakan alur {i>drag and drop<i} biasa.DRAG_FLAG_GLOBAL_SAME_APPLICATION
: Menunjukkan bahwa operasi tarik dapat melewati batas jendela (untuk beberapa instance aplikasi yang sama).Saat
startDragAndDrop()
dipanggil dengan set tanda ini, hanya jendela yang terlihat milik jendela yang sama aplikasi dapat berpartisipasi dalam operasi tarik dan menerima konten yang ditarik.
Pengoptimalan tambahan
Menyesuaikan peluncuran aplikasi dan mentransisikan aplikasi dari jendela desktop ke layar penuh.
Menentukan ukuran dan posisi default
Tidak semua aplikasi, meskipun dapat diubah ukurannya, memerlukan jendela besar untuk menawarkan nilai bagi pengguna.
Anda dapat menggunakan metode ActivityOptions#setLaunchBounds()
untuk menentukan ukuran dan posisi default saat aktivitas diluncurkan.
Masuk ke mode layar penuh dari ruang desktop
Aplikasi dapat memasuki mode layar penuh secara terprogram dengan memanggil
Activity#requestFullScreenMode()
Metode ini menempatkan aplikasi dalam mode layar penuh langsung dari jendela desktop.