Fokus di Compose

Saat berinteraksi dengan aplikasi Anda, pengguna sering kali melakukannya menggunakan mekanisme input non-sentuh:

  • Lingkungan desktop: Pengguna menavigasi dan memasukkan data dengan keyboard hardware dan trackpad fisik.
  • Android TV: Pengguna menavigasi antarmuka menggunakan d-pad.
  • Otomotif: Pengemudi dan penumpang berinteraksi menggunakan pengontrol putar.
  • Perangkat foldable dan tablet: Pengguna memasang cover keyboard dan aksesori input eksternal.

Dalam semua skenario ini, aplikasi Anda harus melacak elemen interaktif mana yang aktif di layar—status aktif ini disebut fokus.

Faktor utama untuk navigasi keyboard yang intuitif

Untuk memberikan pengalaman pengguna yang baik di layar besar dan perangkat non-sentuh, desain aplikasi Anda dengan prinsip-prinsip berikut:

  1. Fokus awal yang logis: Tempatkan fokus awal pada elemen yang kemungkinan besar akan digunakan pengguna saat memasuki layar.
  2. Urutan navigasi yang konsisten: Menyediakan traversal fokus satu dimensi (Tab) dan dua dimensi (tombol panah atau D-pad) yang dapat diprediksi.
  3. Fokus persisten: Memulihkan fokus dengan lancar setelah gangguan, penutupan dialog, atau perubahan konfigurasi.
  4. Status fokus yang jelas: Tampilkan isyarat visual yang jelas dan mudah diakses (seperti cincin fokus atau riak) yang menunjukkan elemen mana yang saat ini memiliki fokus.
  5. Scrolling intuitif: Pastikan elemen yang difokuskan dan konteks di sekitarnya di-scroll dengan lancar ke area tampilan yang terlihat.

Panduan fokus

Baca panduan berikut untuk mempelajari cara mengelola dan menyesuaikan fokus di Compose:

  • Target fokus: Pelajari cara komponen interaktif menjadi target fokus dan cara membuat composable kustom dapat difokuskan.
  • Urutan traversal fokus: Pahami urutan tampilan 1D dan navigasi spasial 2D, serta cara menyesuaikan jalur traversal.
  • Fokus di kolom teks: Pelajari cara kolom teks satu baris dan multi-baris menangani tombol Tab dan panah, serta cara kerja interaksi IME TV.
  • Mengelompokkan target fokus: Mengelompokkan komponen dengan focusGroup dan mencegat pengalihan masuk atau keluar.
  • Memulihkan fokus: Memulihkan fokus ke turunan yang sebelumnya aktif dalam penampung, menangani komponen navigasi, dan mengelola fokus di seluruh transisi layar.
  • Menunjukkan status fokus: Terapkan isyarat visual dan indikasi kustom untuk menandai komponen yang difokuskan.
  • Bereaksi terhadap fokus: Amati perubahan fokus dan kueri properti status fokus menggunakan onFocusChanged.
  • Meminta fokus secara terprogram: Pindahkan fokus secara eksplisit sebagai respons terhadap tindakan pengguna atau error validasi.
  • Memindahkan dan menghapus fokus: Majukan atau hapus fokus secara terprogram menggunakan FocusManager.
  • Mendapatkan dan melepaskan fokus: Mendapatkan fokus untuk sub-interaksi modal dan melepaskannya dengan aman.
  • Menguji navigasi fokus: Tulis pengujian Compose otomatis untuk memverifikasi interaksi keyboard kolom teks, 1D, dan 2D.