Wprowadzanie rysikiem w polach tekstowych

Android 14 (poziom interfejsu API 34) i nowsze umożliwiają użytkownikom wpisywanie tekstu przy każdym wpisywaniu tekstu w dowolnej aplikacji za pomocą rysika. Pola do wprowadzania tekstu w Androidzie, w tym EditText i Widżety tekstowe WebView, obsługa z użyciem rysika.

Jeśli jednak aplikacja wymaga niestandardowych pól do wprowadzania tekstu (zobacz Niestandardowy tekst redaktorów) lub ma złożony układ z polami do wprowadzania tekstu, które nakładają się na powierzchnię rysunku, dostosować aplikację do swoich potrzeb.

.
Rysunek 1. Pismo odręczne z wykorzystaniem rysika.

EditText

W Androidzie 14 pismo odręczne rysikiem jest domyślnie włączone we wszystkich polach EditText i wyższe. Tryb pisma odręcznego jest włączany na urządzeniu EditText po ruchu rysika jest wykrywane w obszarze, który mieści się w granicach pisma odręcznego w tym widoku.

Granice pisma odręcznego obejmują 40 dp pionowego dopełnienia i 10 dp w poziomie. dopełnienie wokół widoku. Dopasuj granice pisma odręcznego za pomocą: setHandwritingBoundsOffsets() Wyłącz pismo odręczne w setAutoHandwritingEnabled(false)

Pole do wprowadzania danych z otaczającym je prostokątem, które wskazuje granice wykrywania zdarzeń ruchu rysika.
Rysunek 2. Granice pisma odręcznego w EditText pól.

Przekazywanie danych wejściowych

Aplikacje mogą wyświetlać zastępcze elementy interfejsu, które wyglądają jak pola do wprowadzania tekstu, ale są po prostu statycznymi elementami interfejsu, które nie mają możliwości wprowadzania tekstu. Szukaj to typowy przykład. Kliknięcie statycznego elementu interfejsu aktywuje przejście z nowym interfejsem, który zawiera funkcjonalne pole do wprowadzania tekstu.

.
Rysunek 3. Przekazywanie dostępu ze statycznego elementu interfejsu do pola do wprowadzania tekstu.

Przekazywanie danych wejściowych rysikiem

Używaj interfejsów API przekazywania pisma odręcznego do obsługi wprowadzania pisma odręcznego rysikiem w przypadku: zastępcze pola do wprowadzania danych (patrz setHandwritingDelegatorCallback() oraz setIsHandwritingDelegate()). Zastępczy element interfejsu jest skonfigurowany tak, aby przekazywać pismo odręczne do funkcji pole do wprowadzania danych, np.:

Kotlin

if (Build.VERSION.SDK_INT >= 34) {
    placeholderInputField.setHandwritingDelegatorCallback {
        showAndFocusDelegateInputField()
    }
    delegateInputField.setIsHandwritingDelegate(true)
}

Java

if (Build.VERSION.SDK_INT >= 34) {
    placeholderInputField.setHandwritingDelegatorCallback(this::showAndFocusInputFieldDelegate);
    delegateInputField.setIsHandwritingDelegate(true);
}

Ruch rysika po widoku pola do wprowadzania tekstu zastępczego wywołuje wywołanie zwrotne. Wywołanie zwrotne aktywuje przejście w interfejsie w celu wyświetlenia i skoncentrowania funkcjonalnych danych wejściowych . Implementacja wywołania zwrotnego jest zwykle taka sama jak implementacja dla odbiornika kliknięć w elemencie zastępczym. Kiedy funkcjonalne pole do wprowadzania danych tworzy InputConnection uruchamia się tryb pisma odręcznego rysikiem.

.
Rysunek 4. Przekazywanie danych wejściowych rysikiem ze statycznego elementu interfejsu do pola do wprowadzania tekstu.

Material Design

com.google.android.material.search zapewnia SearchBar i SearchView zajęć aby ułatwić implementację zastępczego wzorca interfejsu.

Widoki zastępcze i funkcjonalne widoki wyszukiwania są powiązane z setUpWithSearchBar()

Przekazywanie pisma odręcznego jest skonfigurowane w bibliotece materiałów bez dodatkowych wymaganych do tworzenia aplikacji.

Nakładanie się na powierzchnie do rysowania

Jeśli Twoja aplikacja ma powierzchnię do rysowania z polem tekstowym nakładającym się na powierzchnię, może być konieczne wyłączenie pisma odręcznego rysikiem, aby użytkownik mógł rysować. Zobacz setAutoHandwritingEnabled()

Testowanie

Pismo odręczne rysikiem jest obsługiwane na urządzeniach z Androidem 14 i nowszym zgodnego rysika i metody wprowadzania tekstu edytorem (IME), który obsługuje interfejsy API pisma odręcznego rysikiem w Androidzie 14.

Jeśli nie masz urządzenia wejściowego rysika, symuluj wprowadzanie nim na dowolnym urządzeniu z dostępem na poziomie roota (w tym za pomocą emulatorów) przy użyciu poniższego narzędzia Android Debug Bridge. (adb):


// Android 14
adb shell setprop persist.debug.input.simulate_stylus_with_touch true && adb shell stop && adb shell start

// Android 15 and higher
// Property takes effect after screen reconfiguration such as orientation change.
adb shell setprop debug.input.simulate_stylus_with_touch true

Używaj Gboard w wersji beta do testowania, jeśli używasz urządzenia, które nie obsługuje rysik.

Dodatkowe materiały