Entrada da stylus em campos de texto

O Jetpack androidx.compose.material3 permite que os usuários gravem em qualquer componente TextField no qualquer app que use uma stylus.

Figura 1. Entrada escrita à mão com uma stylus.

Para ativar a entrada da stylus por padrão, adicione a dependência da biblioteca ao código Arquivo 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"
    }
}

Groovy

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

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = 'LATEST_EXTENSION_VERSION'
    }

    kotlinOptions {
        jvmTarget = 'LATEST_JVM_VERSION'
    }
}

TextField

A escrita à mão com a stylus é ativada por padrão para todos os componentes do TextField na O Android 14 e versões mais recentes androidx.compose.foundation:foundation:1.7.0 . O modo de escrita à mão é iniciado para uma TextField quando uma stylus faz um movimento é detectado dentro dos limites de escrita à mão do componente.

Os limites da escrita à mão incluem 40 dp de padding vertical e 10 dp de horizontal. ao redor do campo de entrada.

Campo de entrada com um retângulo ao redor indicando os limites para a detecção de eventos de movimento da stylus.
Figura 2. Limites de escrita à mão de componentes TextField.

A escrita à mão com a stylus não tem suporte para campos TextField quando o método de entrada o editor foi solicitado com KeyboardType.Password.

Delegação de entrada

Os aplicativos podem exibir elementos de IU de espaço reservado que parecem ser campos de entrada de texto, mas são, na verdade, apenas elementos estáticos de IU sem capacidade de entrada de texto. Pesquisa são um exemplo comum. Tocar no elemento estático da interface do usuário aciona uma transição para uma nova IU com um campo de entrada de texto funcional focado para entrada.

Figura 3. Delegação de entrada do elemento estático da interface para o campo de entrada de texto.

Delegação de entrada da stylus

Use as APIs de delegação de escrita à mão para oferecer suporte à entrada de escrita à mão com stylus para campos de entrada de marcadores de posição (consulte handwritingDetector e handwritingHandler). O elemento de interface marcador de posição configurada para delegar a escrita à mão a um campo de entrada funcional. Para obter um exemplo implementação, consulte HandwritingDetectorSample.kt

O modo de escrita à mão com a stylus começa quando o campo de entrada funcional fica em foco e cria um InputConnection

Figura 4. Delegação de entrada da stylus do elemento estático da interface para o campo de entrada de texto.

Teste

A escrita à mão com a stylus pode ser usada em dispositivos Android 14 e mais recentes com uma dispositivo de entrada da stylus compatível e um método de entrada Editor (IME) que oferece suporte às APIs de escrita à mão da stylus do Android 14.

Se você não tiver um dispositivo de entrada com uma stylus, simule a entrada dela em qualquer dispositivo com acesso root (incluindo emuladores) usando o seguinte comando do 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

Use o Gboard Beta para testes se você estiver usando um dispositivo sem suporte. stylus.

Outros recursos