Coba buat aplikasi Android Anda dapat digunakan oleh semua orang, termasuk orang dengan kebutuhan aksesibilitas.
Orang dengan gangguan penglihatan, buta warna, gangguan pendengaran, gangguan ketangkasan, gangguan kognitif, dan banyak gangguan lainnya menggunakan perangkat Android. Saat mengembangkan aplikasi dengan mempertimbangkan aksesibilitas, Anda akan membuat pengalaman pengguna menjadi lebih baik bagi orang yang memiliki kebutuhan aksesibilitas tersebut.
Halaman ini menyajikan pedoman untuk mengimplementasikan elemen utama aksesibilitas sehingga semua orang dapat menggunakan aplikasi Anda dengan lebih mudah. Untuk panduan yang lebih mendalam mengenai cara membuat aplikasi Anda lebih mudah diakses, lihat Prinsip-prinsip untuk meningkatkan aksesibilitas aplikasi.
Meningkatkan visibilitas teks
Untuk setiap kumpulan teks dalam aplikasi, sebaiknya gunakan kontras warna—atau perbedaan kecerahan yang dirasakan antara warna teks dengan warna latar belakang teks—untuk berada di atas nilai minimum tertentu. Nilai minimum yang tepat tergantung pada ukuran font teks dan apakah teks muncul dalam cetak tebal:
- Jika teks lebih kecil dari 18 sp, atau jika teks dicetak tebal dan lebih kecil dari 14 sp, gunakan warna latar depan dan latar belakang yang menghasilkan rasio kontras warna minimal 4,5:1.
- Untuk semua teks lainnya, setel rasio kontras warna setidaknya 3:1.
Gambar berikut menampilkan dua contoh kontras warna teks dengan latar belakang:
Untuk memeriksa kontras warna teks dengan latar belakang di aplikasi Anda, gunakan pemeriksa kontras warna online atau aplikasi Accessibility Scanner.
Menggunakan kontrol yang besar dan sederhana
UI aplikasi Anda lebih mudah digunakan jika kontrolnya lebih mudah dilihat dan diketuk. Untuk antarmuka sentuh, sebaiknya setiap elemen UI interaktif memiliki area yang dapat difokuskan, atau ukuran target sentuh, setidaknya 48 dp x 48 dp. Ukuran yang lebih besar akan lebih baik.
Di Jetpack Compose, banyak komponen Material bawaan seperti Button,
IconButton, dan ListItem sudah menerapkan ukuran minimum ini. Namun, saat
membuat elemen interaktif kustom, Anda harus menetapkan ukuran sendiri.
Dalam cuplikan berikut, elemen UI kecil dibuat dapat diakses dengan memberikan target sentuh yang lebih besar:
@Composable private fun LargeBox() { var clicked by remember { mutableStateOf(false) } Box( Modifier .size(100.dp) .background(if (clicked) Color.DarkGray else Color.LightGray) ) { Box( Modifier .align(Alignment.Center) .clickable { clicked = !clicked } .background(Color.Black) .sizeIn(minWidth = 48.dp, minHeight = 48.dp) ) } }
Untuk mengetahui informasi selengkapnya tentang ukuran target sentuh, lihat Ukuran target sentuh minimum.
Menjelaskan setiap elemen UI
Untuk setiap elemen UI di aplikasi Anda, sertakan deskripsi yang
menjelaskan tujuan elemen. Pada kebanyakan kasus, Anda menyertakan deskripsi ini di
atribut contentDescription elemen, seperti ditampilkan dalam cuplikan
kode berikut:
@Composable private fun ShareButton(onClick: () -> Unit) { IconButton(onClick = onClick) { Icon( imageVector = Icons.Filled.Share, contentDescription = stringResource(R.string.label_share) ) } }
Perhatikan bahwa Anda tidak perlu memberikan contentDescription untuk composable Text. Layanan aksesibilitas Android (seperti TalkBack) otomatis
mengucapkan teks itu sendiri.
Saat menambahkan deskripsi ke elemen UI aplikasi, lakukan praktik terbaik berikut:
Gunakan deskripsi untuk menyampaikan tujuan dan hasil interaksi, bukan detail visual. Gunakan properti semantik
Role(sepertiRole.ButtonatauRole.Switch) untuk mengekspos jenis elemen UI. Dengan begitu, pembaca layar dapat mengumumkan elemen dengan benar.Hindari pengulangan yang tidak perlu dalam deskripsi. Misalnya, jika memilih tombol menyebabkan tindakan "kirim" terjadi di aplikasi, buat deskripsi tombol
"Submit", bukan"Submit button".Setiap deskripsi harus unik. Dengan begitu, saat pengguna pembaca layar menemukan deskripsi elemen berulang, mereka akan mengenali dengan benar bahwa fokus berada pada elemen yang telah memiliki fokus sebelumnya. Secara khusus, setiap item dalam daftar seperti
LazyColumnharus memiliki deskripsi yang berbeda, yang masing-masing mencerminkan konten yang unik untuk item tertentu, seperti nama kota dalam daftar lokasi.Gunakan
hideFromAccessibilityAPI untuk menandai elemen yang murni dekoratif sehingga layanan aksesibilitas dapat mengabaikannya. Jika elemen UI memiliki parametercontentDescription, tetapi murni dekoratif (sepertiIconyang merupakan bagian dari elemen UI lain), teruskannulluntuk menghindari pemberian label yang berlebihan. Untuk kasus penggunaan yang lebih rumit, lihat Menggabungkan dan menghapus.Uji kode Anda untuk memastikan deskripsi konten dikirimkan sesuai harapan. Android Lint, pengujian Compose, dan alat pengujian manual dan otomatis dapat menandai masalah umum dan memaparkan masalah dalam penerapan Anda.
Referensi lainnya
Untuk mempelajari lebih lanjut cara menjadikan aplikasi lebih mudah diakses, lihat referensi tambahan berikut: