Uygulamaları daha erişilebilir hale getirme

Android uygulamanızı, erişilebilirlik ihtiyaçları olan kişiler de dahil olmak üzere herkes için kullanılabilir hale getirmeye çalışın.

Görme bozukluğu, renk körlüğü, işitme bozukluğu, el becerisi bozukluğu, zihinsel engellilik ve diğer birçok engeli olan kişiler Android cihazları kullanır. Uygulamaları erişilebilirliği göz önünde bulundurarak geliştirdiğinizde erişilebilirlik ihtiyaçları olan kullanıcılar için kullanıcı deneyimini daha iyi hale getirirsiniz.

Bu sayfada, herkesin uygulamanızı daha kolay kullanabilmesi için erişilebilirliğin temel öğelerini uygulamaya yönelik yönergeler sunulmaktadır. Uygulamanızı daha erişilebilir hale getirme konusunda daha ayrıntılı bilgi için Uygulama erişilebilirliğini iyileştirme ilkeleri başlıklı makaleyi inceleyin.

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

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

  • Metin 18 sp'den küçükse veya metin kalın ve 14 sp'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 kontrastına dair iki örnek gösterilmektedir:

Renkli arka planlarda "Metin" kelimesinin iki örneği. Soldaki örnekte metin ile arka plan arasında düşük renk kontrastı varken sağdaki örnekte yeterli renk kontrastı vardır.
Şekil 1. Önerilenden daha düşük (sol) ve yeterli (sağ) renk kontrastı.

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

Büyük ve basit kontroller kullanın.

Uygulamanızın kullanıcı arayüzündeki kontrollerin görülmesi ve dokunulması daha kolay olursa arayüzün kullanımı da kolaylaşır. Dokunma arayüzleri için her etkileşimli kullanıcı arayüzü öğesinin en az 48 dp x 48 dp odaklanılabilir alana veya dokunma hedefi boyutuna sahip olmasını öneririz. Daha büyük olması 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ü öğesi daha büyük bir dokunma hedefi verilerek erişilebilir hale getirilmiştir:

@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 bileşenleri için contentDescription sağlamanız gerekmez. Android erişilebilirlik hizmetleri (ör. TalkBack), metnin kendisini 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 açıklamak için açıklamaları kullanın. Bir kullanıcı arayüzü öğesinin türünü göstermek için Role semantik özelliğini (Role.Button veya Role.Switch gibi) kullanın. Bu sayede ekran okuyucular öğeyi doğru şekilde duyurabilir.

  • Açıklamalarda gereksiz tekrarlardan kaçının. Örneğin, bir düğmenin seçilmesi uygulamanızda "gönder" işleminin gerçekleşmesine neden oluyorsa düğmenin açıklamasını "Submit button" değil, "Submit" yapın.

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

  • Erişilebilirlik hizmetlerinin yoksayabilmesi için tamamen dekoratif öğeleri hideFromAccessibility API'sini kullanarak işaretleyin. Bir kullanıcı arayüzü öğesinin contentDescription parametresi varsa ancak bu öğe yalnızca dekoratif amaçlıysa (ör. başka bir kullanıcı arayüzü öğesinin parçası olan 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 sorunları 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

İçerik görüntüleme