Selain metode masukan virtual (seperti keyboard virtual), Android juga mendukung keyboard fisik yang terpasang pada perangkat. Keyboard tidak hanya menawarkan cara yang nyaman untuk memasukkan teks, tetapi juga menawarkan cara bagi pengguna untuk menavigasi dan berinteraksi dengan aplikasi Anda. Meskipun sebagian besar perangkat genggam seperti ponsel menggunakan sentuhan sebagai mode interaksi utama, tablet dan perangkat sejenis kini makin populer dan banyak pengguna yang suka memasang aksesori keyboard.
Karena makin banyak perangkat Android menawarkan pengalaman semacam ini, Anda harus untuk mengoptimalkan aplikasi guna mendukung interaksi melalui keyboard. Tutorial ini menjelaskan cara agar Anda dapat mendukung navigasi dengan keyboard secara lebih baik.
Catatan: Dukungan navigasi terarah dalam aplikasi Anda juga merupakan hal penting guna memastikan bahwa aplikasi dapat diakses oleh pengguna yang tidak melakukan navigasi menggunakan isyarat visual. Navigasi terarah dengan dukungan penuh pada aplikasi Anda juga dapat membantu mengotomatiskan pengujian antarmuka pengguna dengan fitur seperti uiautomator.
Lihat referensi terkait berikut:
Menguji aplikasi
Mungkin saja pengguna sudah dapat melakukan navigasi aplikasi Anda dengan keyboard, karena sistem Android secara default sudah memungkinkan sebagian besar perilaku yang diperlukan.
Semua widget interaktif yang disediakan oleh framework Android (seperti Button
dan EditText
) dapat difokuskan. Ini berarti pengguna dapat melakukan navigasi dengan perangkat kontrol seperti D-pad atau keyboard dan setiap widget akan menyala atau mengubah tampilannya jika mendapatkan fokus masukan.
Untuk menguji aplikasi Anda:
- Instal aplikasi Anda di perangkat yang menawarkan keyboard hardware.
Jika tidak memiliki perangkat hardware dengan keyboard, sambungkan keyboard Bluetooth atau keyboard USB (meskipun tidak semua perangkat mendukung aksesori USB).
Anda juga dapat menggunakan emulator Android:
- Di AVD Manager, klik New Device atau pilih profil yang ada, lalu klik Clone.
- Di jendela yang muncul, pastikan Keyboard dan DPad aktif.
- Untuk menguji aplikasi Anda, hanya gunakan tombol Tab untuk melakukan navigasi melalui UI Anda, yang memastikan bahwa setiap kontrol UI mendapatkan fokus seperti yang diharapkan.
Cari instance di mana fokus bergerak dengan cara yang tidak Anda harapkan.
- Mulai dari awal aplikasi Anda dan gunakan kontrol arah (tombol panah pada keyboard) untuk melakukan navigasi aplikasi Anda.
Dari setiap elemen yang dapat difokuskan dalam UI Anda, tekan Atas, Bawah, Kiri, dan Kanan.
Cari instance di mana fokus bergerak dengan cara yang tidak Anda harapkan.
Jika menemukan instance di mana navigasi dengan tombol Tab atau kontrol arah tidak melakukan apa yang diharapkan, tentukan arah tujuan fokus dalam tata letak Anda, seperti yang dibahas di bagian berikut.
Menangani navigasi tab
Saat pengguna melakukan navigasi aplikasi Anda dengan tombol Tab keyboard, sistem akan meneruskan fokus masukan di antara elemen-elemen berdasarkan urutan munculnya dalam tata letak. Jika Anda menggunakan tata letak relatif, misalnya, dan urutan elemen di layar berbeda dari urutan dalam file, Anda mungkin perlu menentukan urutan fokus secara manual.
Misalnya, dalam tata letak berikut, dua tombol disejajarkan di sisi kanan dan kolom teks disejajarkan di sebelah kiri tombol kedua. Untuk meneruskan fokus dari tombol pertama ke kolom teks, lalu ke tombol kedua, tata letak harus menentukan urutan fokus secara eksplisit untuk setiap elemen yang dapat difokuskan dengan atribut android:nextFocusForward
:
<RelativeLayout ...> <Button android:id="@+id/button1" android:layout_alignParentTop="true" android:layout_alignParentRight="true" android:nextFocusForward="@+id/editText1" ... /> <Button android:id="@+id/button2" android:layout_below="@id/button1" android:nextFocusForward="@+id/button1" ... /> <EditText android:id="@id/editText1" android:layout_alignBottom="@+id/button2" android:layout_toLeftOf="@id/button2" android:nextFocusForward="@+id/button2" ... /> ... </RelativeLayout>
Sekarang, fokus akan bergerak tepat sesuai dengan tampilan di layar: dari button1
ke button2
, lalu ke editText1
, bukan mengirim fokus dari button1
ke button2
, lalu ke editText1
.
Menangani navigasi terarah
Pengguna juga dapat melakukan navigasi aplikasi Anda dengan tombol panah di keyboard (perilaku ini sama seperti ketika melakukan navigasi dengan D-pad atau trackball). Sistem ini memberi perkiraan terbaik perihal tampilan mana yang harus diberi fokus pada arah tertentu berdasarkan tata letak tampilan di layar. Namun terkadang, sistem mungkin salah memperkirakan.
Jika sistem tidak meneruskan fokus ke tampilan yang tepat saat melakukan navigasi ke arah tertentu, tentukan tampilan mana yang perlu menerima fokus dengan atribut berikut:
Setiap atribut akan menunjuk tampilan berikutnya agar menerima fokus ketika pengguna melakukan navigasi ke arah tersebut, seperti yang ditentukan oleh ID tampilan. Sebagai contoh:
<Button android:id="@+id/button1" android:nextFocusRight="@+id/button2" android:nextFocusDown="@+id/editText1" ... /> <Button android:id="@id/button2" android:nextFocusLeft="@id/button1" android:nextFocusDown="@id/editText1" ... /> <EditText android:id="@id/editText1" android:nextFocusUp="@id/button1" ... />