Oprócz metod wprowadzania danych bezdotykowych, takich jak klawiatury ekranowe, Android obsługuje też klawiatury fizyczne podłączone do urządzenia. Klawiatura zapewnia wygodny tryb wprowadzania tekstu i umożliwia użytkownikom nawigację po aplikacji i interakcję z nią. Chociaż większość urządzeń przenośnych, takich jak telefony, używa dotykowego interfejsu jako głównego trybu interakcji, tablety i podobne urządzenia są popularne, a wielu użytkowników lubi dołączać do nich klawiatury.
Coraz więcej urządzeń z Androidem oferuje takie możliwości, dlatego warto zoptymalizować aplikację pod kątem obsługi za pomocą klawiatury. Z tego dokumentu dowiesz się, jak ulepszyć nawigację za pomocą klawiatury.
Testowanie aplikacji
Użytkownicy mogą już poruszać się po aplikacji za pomocą klawiatury, ponieważ system Android domyślnie włącza większość niezbędnych zachowań.
Wszystkie interaktywne widżety udostępniane przez platformę Androida, takie jak Button
i EditText
, można ustawić w centrum. Oznacza to, że użytkownicy mogą poruszać się po interfejsie za pomocą urządzeń sterujących, takich jak pad kierunkowy lub klawiatura. Każdy widżet świeci lub zmienia swój wygląd, gdy zyskuje fokus.
Aby przetestować aplikację, wykonaj te czynności:
- Zainstaluj aplikację na urządzeniu z klawiaturą sprzętową.
Jeśli nie masz urządzenia z klawiaturą, podłącz klawiaturę Bluetooth lub klawiaturę USB.
Możesz też użyć emulatora Androida:
- W Menedżerze AVD kliknij Nowe urządzenie lub wybierz istniejący profil i kliknij Klonuj.
- W wyświetlonym oknie upewnij się, że włączone są opcje Klawiatura i D-pad.
- Aby przetestować aplikację, nawiguj po interfejsie za pomocą tylko klawisza Tab. Upewnij się, że każde pole sterujące interfejsu użytkownika jest aktywne zgodnie z oczekiwaniami.
Poszukaj przypadków, w których punkt zaznaczenia przesuwa się w nieoczekiwany sposób.
- Zacznij od początku aplikacji i przechodź przez interfejs, używając elementów sterujących, takich jak klawisze strzałek na klawiaturze. W przypadku każdego elementu w interfejsie, który można zaznaczyć, naciśnij W górę, W dół, W lewo i W prawo.
Poszukaj przypadków, w których punkt zaznaczenia przesuwa się w nieoczekiwany sposób.
Jeśli zdarzy się, że poruszanie się za pomocą klawisza Tab lub elementów sterujących kierunkiem nie działa zgodnie z oczekiwaniami, określ, gdzie w układzie musi znajdować się punkt skupienia, jak opisano w następnych sekcjach.
Obsługa nawigacji po kartach
Gdy użytkownik porusza się po aplikacji za pomocą klawisza Tab, system przenosi fokus wprowadzania między elementami w zależności od kolejności ich występowania w układzie. Jeśli na przykład używasz układu względnego, a kolejność elementów na ekranie różni się od kolejności w pliku, konieczne może być ręczne określenie kolejności na potrzeby funkcji ostrości.
Na przykład w tym układzie 2 przyciski są wyrównane po prawej stronie, a pole tekstowe po lewej stronie drugiego przycisku. Aby przekazać fokus z pierwszego przycisku na pole tekstowe, a potem na drugi przycisk, układ musi wyraźnie określić kolejność elementów, które mogą być zaznaczane, za pomocą atrybutu android:nextFocusForward
.
<androidx.constraintlayout.widget.ConstraintLayout ...> <Button android:id="@+id/button1" android:nextFocusForward="@+id/editText1" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" ... /> <Button android:id="@+id/button2" android:nextFocusForward="@+id/button1" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/button1" ... /> <EditText android:id="@id/editText1" android:nextFocusForward="@+id/button2" app:layout_constraintBottom_toBottomOf="@+id/button2" app:layout_constraintRight_toLeftOf="@id/button2 ... /> ... </androidx.constraintlayout.widget.ConstraintLayout>
Teraz zamiast przemieszczania punktu ostrości z button1
na button2
, a potem na editText1
, punkt ten przesuwa się odpowiednio do tego, co jest widoczne na ekranie: z button1
na editText1
, a potem na button2
.
Obsługa nawigacji kierunkowej
Użytkownicy mogą też poruszać się po aplikacji za pomocą klawiszy strzałek na klawiaturze, które działają tak samo jak przy korzystaniu z joysticka lub trackballa. System wybiera „najlepszy widok” w danym kierunku na podstawie układu widoków na ekranie. Czasami jednak system się myli.
Jeśli podczas nawigacji w danym kierunku system nie przekaże fokusu do odpowiedniego widoku, określ, który widok musi zostać zaznaczony, za pomocą tych atrybutów:
Każdy atrybut wskazuje następny widok, który ma zostać wyświetlony, gdy użytkownik przejdzie w określonym kierunku, zgodnie z określonym identyfikatorem widoku. Przykład:
<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" ... />
Dodatkowe materiały
Zapoznaj się z tymi materiałami: