Wprowadzanie rysikiem w polach tekstowych

Plecak odrzutowy androidx.compose.material3 umożliwia użytkownikom pisanie w dowolnym komponencie TextField w dowolnej aplikacji za pomocą rysika.

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

Aby domyślnie włączyć wprowadzanie rysikiem, dodaj zależność biblioteki do biblioteki Plik build.gradle:

Kotlin

dependencies {
    implementation("androidx.compose.foundation:foundation:LATEST_COMPOSE_VERSION")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "LATEST_EXTENSION_VERSION"
    }

    kotlinOptions {
        jvmTarget = "LATEST_JVM_VERSION"
    }
}

Odlotowe

dependencies {
    implementation 'androidx.compose.foundation:foundation:LATEST_COMPOSE_VERSION'
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = 'LATEST_EXTENSION_VERSION'
    }

    kotlinOptions {
        jvmTarget = 'LATEST_JVM_VERSION'
    }
}

TextField

Pismo odręczne rysikiem jest domyślnie włączone we wszystkich komponentach TextField Androida 14 lub nowszego oraz androidx.compose.foundation:foundation:1.7.0. zależności. Tryb pisma odręcznego jest włączany na urządzeniu TextField po ruchu rysika jest wykrywane w granicach pisma odręcznego komponentu.

Granice pisma odręcznego obejmują 40 dp pionowego dopełnienia i 10 dp w poziomie. wokół pola do wprowadzania danych.

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 komponentach (TextField).

Pismo odręczne rysikiem nie jest obsługiwane w polach TextField, gdy metoda wprowadzania została wysłana prośba o dodanie do edytora przy użyciu KeyboardType.Password.

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 handwritingDetector i handwritingHandler). Zastępczy element interfejsu to skonfigurowana pod kątem przekazywania pisma odręcznego do działającego pola do wprowadzania danych. Przykład: implementacji, zobacz HandwritingDetectorSample.kt

Tryb pisma odręcznego rysikiem uruchamia się, gdy odpowiednie pole wprowadzania danych tworzy InputConnection

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

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