Uygulamaları daha erişilebilir hale getirme

Android uygulamanızı, erişilebilirlik ihtiyaçları olan kişiler de dahil olmak üzere herkesin kullanabileceği şekilde tasarlamaya çalışın.

Görme bozukluğu, renk körlüğü, işitme bozukluğu, el becerisi bozukluğu ve zihinsel engeller gibi birçok engeli olan kişiler Android cihazları kullanır. Erişilebilirliği göz önünde bulundurarak uygulama geliştirdiğinizde, erişilebilirlik ihtiyaçları olan kullanıcıların deneyimini iyileştirirsiniz.

Bu sayfada, herkesin uygulamanızı daha kolay kullanabilmesi için erişilebilirliğin temel unsurlarını uygulama yönergeleri sunulmaktadır. Uygulamanızı daha erişilebilir hale getirme hakkında daha ayrıntılı bilgi için Uygulama erişilebilirliğini iyileştirmeye yönelik ilkeler başlıklı makaleyi inceleyin.

Metin görünürlüğünü artırma

Uygulamanızdaki her metin grubu için renk kontrastının (yani metnin rengi ile metnin arkasındaki arka planın rengi arasındaki algılanan parlaklık farkının) belirli bir eşiğin üzerinde olmasını öneririz. Tam eşik, metnin yazı tipi boyutuna ve metnin kalın olarak gösterilip gösterilmediğine bağlıdır:

  • Metin 18sp'den küçükse veya metin kalın ve 14sp'den küçükse en az 4,5:1 renk kontrast oranı sağlayan ön plan ve arka plan renkleri kullanın.
  • Diğer tüm metinler için renk kontrast oranını en az 3:1 olarak ayarlayın.

Aşağıdaki resimde, metin ile arka plan rengi arasındaki kontrastla ilgili iki örnek gösterilmektedir:

Renkli arka planlar üzerinde "Metin" kelimesinin iki örneği. Soldaki örnekte metin ve arka plan arasında düşük renk kontrastı, sağdaki örnekte ise yeterli renk kontrastı var.
Şekil 1. Önerilenden düşük (sol) ve yeterli (sağ) renk kontrastı.

Uygulamanızdaki metin-arka plan rengi kontrastını kontrol etmek için online renk kontrastı denetleyicisi veya Erişilebilirlik Tarayıcısı uygulamasını kullanın.

Büyük ve basit kontroller kullanma

Kontrolleri daha kolay görülebilir ve dokunulabilirse uygulamanızın kullanıcı arayüzü daha kolay kullanılır. Dokunmatik arayüzlerde, her etkileşimli kullanıcı arayüzü öğesinin odaklanılabilir bir alana veya en az 48 dp x 48 dp dokunma hedefi boyutuna sahip olmasını öneririz. Daha büyük ekranlar daha da iyidir.

Jetpack Compose'da Button, IconButton ve ListItem gibi birçok yerleşik Materyal bileşeni bu minimum boyutu zaten zorunlu kılar. Ancak özel etkileşimli öğeler oluştururken boyutu kendiniz ayarlamanız gerekir.

Aşağıdaki snippet'te, küçük bir kullanıcı arayüzü öğesine daha büyük bir dokunma hedefi verilerek erişilebilir hale getiriliyor:

@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)
        )
    }
}

Dokunma hedefi boyutları hakkında daha fazla bilgi için Minimum dokunma hedefi boyutları başlıklı makaleyi inceleyin.

Her kullanıcı arayüzü öğesini açıklama

Uygulamanızdaki her kullanıcı arayüzü öğesi için öğenin amacını açıklayan bir açıklama ekleyin. Çoğu durumda bu açıklamayı, aşağıdaki kod snippet'inde gösterildiği gibi öğenin contentDescription özelliğine eklersiniz:

@Composable
private fun ShareButton(onClick: () -> Unit) {
    IconButton(onClick = onClick) {
        Icon(
            imageVector = Icons.Filled.Share,
            contentDescription = stringResource(R.string.label_share)
        )
    }
}

Text composable'lar için contentDescription sağlamanız gerekmez. Android erişilebilirlik hizmetleri (ör. TalkBack) metni otomatik olarak duyurur.

Uygulamanızın kullanıcı arayüzü öğelerine açıklama eklerken aşağıdaki en iyi uygulamaları göz önünde bulundurun:

  • Görsel ayrıntıları değil, etkileşimin amacını ve sonucunu aktarmak için açıklamaları kullanın. Bir kullanıcı arayüzü öğesinin türünü göstermek için Role semantik özelliğini (ör. Role.Button veya Role.Switch) kullanın. Bu sayede ekran okuyucular öğeyi doğru şekilde duyurabilir.

  • Açıklamalarda gereksiz tekrarlardan kaçının. Örneğin, bir düğme seçildiğinde uygulamanızda "gönderme" işlemi gerçekleşiyorsa düğmenin açıklamasını "Submit" olarak ayarlayın, "Submit button" olarak değil.

  • Her açıklama benzersiz olmalıdır. Bu sayede, ekran okuyucu kullanıcıları tekrarlanan bir öğe açıklamasıyla karşılaştığında odağın daha önce odaklanılmış bir öğe üzerinde olduğunu doğru şekilde anlar. Özellikle, LazyColumn gibi bir listedeki her öğenin farklı bir açıklaması olmalıdır. Bu açıklamalar, belirli bir öğeye özgü içeriği (ör. konum listesindeki bir şehrin adı) yansıtmalıdır.

  • Tamamen dekoratif öğeleri işaretlemek için hideFromAccessibility API'yi kullanın. Böylece erişilebilirlik hizmetleri bu öğeleri yoksayabilir. Bir kullanıcı arayüzü öğesinde contentDescription parametresi varsa ancak bu öğe tamamen dekoratifse (ör. başka bir kullanıcı arayüzü öğesinin parçası olan bir Icon) gereksiz etiketlemeyi önlemek için null değerini iletin. Daha ayrıntılı kullanım alanları için Birleştirme ve temizleme başlıklı makaleyi inceleyin.

  • İçerik açıklamasının beklendiği gibi yayınlandığından emin olmak için kodunuzu test edin. Android Lint, Compose testi ve manuel ve otomatik test araçları, yaygın sorunları işaretleyebilir ve uygulamanızdaki problemleri ortaya çıkarabilir.

Ek kaynaklar

Uygulamanızı daha erişilebilir hale getirme hakkında daha fazla bilgi edinmek için aşağıdaki ek kaynaklara göz atın:

Codelab uygulamaları

Videolar

İçeriği görüntüleme