Ułatwienia dostępu w aplikacjach

Postaraj się, aby Twoja aplikacja na Androida była dostępna dla wszystkich, w tym dla osób z potrzebami w zakresie ułatwień dostępu.

Z urządzeń z Androidem korzystają osoby z wadami wzroku, daltonizmem, wadami słuchu, upośledzeniem sprawności manualnej, niepełnosprawnością poznawczą i wieloma innymi niepełnosprawnościami. Gdy tworzysz aplikacje z myślą o ułatwieniach dostępu, poprawiasz wrażenia użytkowników, którzy potrzebują takich ułatwień.

Na tej stronie znajdziesz wskazówki dotyczące wdrażania kluczowych elementów ułatwień dostępu, dzięki którym każdy będzie mógł łatwiej korzystać z Twojej aplikacji. Więcej informacji o tym, jak zwiększyć dostępność aplikacji, znajdziesz w artykule Zasady poprawiania dostępności aplikacji.

Zwiększanie widoczności tekstu

W przypadku każdego zestawu tekstu w aplikacji zalecamy, aby kontrast kolorów, czyli różnica w postrzeganej jasności między kolorem tekstu a kolorem tła za tekstem, przekraczał określony próg. Dokładny próg zależy od rozmiaru czcionki i tego, czy tekst jest pogrubiony:

  • Jeśli tekst jest mniejszy niż 18 sp lub jest pogrubiony i mniejszy niż 14 sp, użyj kolorów pierwszego planu i tła, które dają współczynnik kontrastu kolorów wynoszący co najmniej 4,5:1.
  • W przypadku pozostałego tekstu ustaw współczynnik kontrastu kolorów na co najmniej 3:1.

Na obrazie poniżej widać 2 przykłady kontrastu między kolorem tekstu a tła:

Dwa przykłady słowa „Tekst” na kolorowym tle. Przykład po lewej stronie ma niski kontrast kolorów między tekstem a tłem, a przykład po prawej stronie ma wystarczający kontrast kolorów.
Rysunek 1. Kontrast kolorów niższy od zalecanego (po lewej) i wystarczający (po prawej).

Aby sprawdzić kontrast między tekstem a tłem w aplikacji, użyj internetowego narzędzia do sprawdzania kontrastu kolorów lub aplikacji Accessibility Scanner.

używać dużych, prostych elementów sterujących;

Interfejs aplikacji jest łatwiejszy w użyciu, jeśli elementy sterujące są dobrze widoczne i łatwe do kliknięcia. W przypadku interfejsów dotykowych zalecamy, aby każdy interaktywny element interfejsu miał obszar, który można zaznaczyć, lub rozmiar docelowego elementu dotykowego o wymiarach co najmniej 48 x 48 dp. Im większy, tym lepszy.

W Jetpack Compose wiele wbudowanych komponentów Material, takich jak Button, IconButton i ListItem, już wymusza ten minimalny rozmiar. Jeśli jednak tworzysz niestandardowe elementy interaktywne, musisz samodzielnie ustawić ich rozmiar.

W tym fragmencie kodu mały element interfejsu jest dostępny dzięki większemu docelowemu elementowi dotykowemu:

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

Więcej informacji o rozmiarach docelowych elementów dotykowych znajdziesz w artykule Minimalne rozmiary docelowych elementów dotykowych.

Opisz każdy element interfejsu.

Do każdego elementu interfejsu w aplikacji dołącz opis, który wyjaśnia jego przeznaczenie. W większości przypadków opis ten umieszcza się w atrybucie contentDescription elementu, jak pokazano w tym fragmencie kodu:

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

Pamiętaj, że nie musisz podawać contentDescription dla funkcji kompozycyjnych Text. Usługi ułatwień dostępu na Androidzie (np. TalkBack) automatycznie odczytują tekst.

Podczas dodawania opisów do elementów interfejsu aplikacji pamiętaj o tych sprawdzonych metodach:

  • Używaj opisów, aby przekazać cel i wynik interakcji, a nie szczegóły wizualne. Użyj właściwości semantyki Role (np. Role.Button lub Role.Switch), aby ujawnić typ elementu interfejsu. Dzięki temu czytniki ekranu mogą prawidłowo odczytywać element.

  • Unikaj powtórzeń w opisach. Jeśli na przykład kliknięcie przycisku powoduje przesłanie danych w aplikacji, opis przycisku powinien brzmieć "Submit", a nie "Submit button".

  • Każdy tekst reklamy powinien być unikalny. Dzięki temu, gdy użytkownicy czytnika ekranu napotkają powtarzający się opis elementu, prawidłowo rozpoznają, że zaznaczony jest element, który był już wcześniej zaznaczony. W szczególności każdy element na liście, np. LazyColumn, powinien mieć inny opis, który odzwierciedla treść unikalną dla danego elementu, np. nazwę miasta na liście lokalizacji.

  • Użyj interfejsu API hideFromAccessibility, aby oznaczyć elementy czysto dekoracyjne, dzięki czemu usługi ułatwień dostępu będą mogły je ignorować. Jeśli element interfejsu ma parametr contentDescription, ale jest wyłącznie dekoracyjny (np. Icon, który jest częścią innego elementu interfejsu), przekaż null, aby uniknąć zbędnych etykiet. Więcej informacji o bardziej złożonych przypadkach użycia znajdziesz w sekcji Scalanie i czyszczenie.

  • Przetestuj kod, aby upewnić się, że opis treści jest dostarczany zgodnie z oczekiwaniami. Android Lint, testowanie Compose oraz narzędzia do testowania ręcznego i automatycznego mogą wykrywać typowe problemy i ujawniać błędy we wdrożeniu.

Dodatkowe materiały

Więcej informacji o tym, jak zwiększyć dostępność aplikacji, znajdziesz w tych materiałach:

Codelabs

Filmy

Wyświetlanie treści