텍스트 입력란의 스타일러스 입력

Compose 방식 사용해 보기
Jetpack Compose는 Android의 권장 UI 툴킷입니다. Compose에서 스타일러스를 사용하는 방법을 알아보세요.

Android 14 (API 수준 34) 이상에서는 사용자가 스타일러스를 사용하여 모든 앱의 텍스트 입력란에 텍스트를 작성할 수 있습니다. EditText 구성요소 및 WebView 텍스트 위젯을 비롯한 Android 텍스트 입력란은 기본적으로 스타일러스 입력을 지원합니다.

하지만 앱에 맞춤 텍스트 입력란 (맞춤 텍스트 편집기 참고)이 필요하거나 그리기 표면을 오버레이하는 텍스트 입력란이 있는 복잡한 레이아웃이 있는 경우 앱을 맞춤설정해야 합니다.

그림 1. 스타일러스로 필기 입력하기

EditText

Android 14 이상에서는 모든 EditText 필드에 스타일러스 필기가 기본적으로 사용 설정되어 있습니다. 스타일러스 동작 이벤트가 뷰의 필기 경계 내에서 감지되면 EditText에 필기 모드가 시작됩니다.

필기 경계에는 뷰 주위에 세로 패딩 40dp와 가로 패딩 10dp가 포함됩니다. setHandwritingBoundsOffsets()로 필기 경계를 조정합니다. setAutoHandwritingEnabled(false)로 필기를 사용 중지합니다.

스타일러스 모션 이벤트 감지를 위한 경계를 나타내는 주변 직사각형이 있는 입력 필드
그림 2. EditText 필드의 필기 경계

입력 위임

앱은 텍스트 입력란처럼 보이지만 실제로는 텍스트 입력 기능이 없는 정적 UI 요소인 자리표시자 UI 요소를 표시할 수 있습니다. 검색 필드는 일반적인 예입니다. 정적 UI 요소를 탭하면 입력에 포커스가 맞춰진 기능적 텍스트 입력란이 포함된 새 UI로 전환됩니다.

그림 3. 정적 UI 요소에서 텍스트 입력란으로의 입력 위임

스타일러스 입력 위임

필기 위임 API를 사용하여 자리표시자 입력란의 스타일러스 필기 입력을 지원합니다 (setHandwritingDelegatorCallback()setIsHandwritingDelegate() 참고). 자리표시자 UI 요소는 필기를 기능적 입력란에 위임하도록 구성됩니다. 예를 들면 다음과 같습니다.

Kotlin

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

자바

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

자리표시자 텍스트 입력란 뷰 위로 스타일러스가 움직이면 콜백이 호출됩니다. 콜백은 기능적 입력란을 표시하고 포커스를 맞추도록 UI 전환을 트리거합니다. 콜백 구현은 일반적으로 자리표시자 요소의 클릭 리스너 구현과 동일합니다. 기능적 입력란이 만들면 InputConnection, 스타일러스 필기 모드가 시작됩니다.

그림 4. 정적 UI 요소에서 텍스트 입력란으로의 스타일러스 입력 위임

머티리얼 디자인

The com.google.android.material.search 라이브러리는 자리표시자 UI 패턴의 구현을 용이하게 하는 SearchBarSearchView 클래스를 제공합니다.

자리표시자 및 기능적 검색 뷰는 setUpWithSearchBar()로 연결됩니다.

필기 위임은 앱에서 추가 개발이 필요하지 않은 머티리얼 라이브러리에서 구성됩니다.

그리기 표면과 겹침

앱에 표면을 오버레이하는 텍스트 필드가 있는 그리기 표면이 있는 경우 사용자가 그릴 수 있도록 스타일러스 필기를 사용 중지해야 할 수 있습니다. setAutoHandwritingEnabled()를 참고하세요.

테스트

스타일러스 필기는 호환되는 스타일러스 입력 기기와 Android 14 스타일러스 필기 API를 지원하는 입력 방법 편집기 (IME)가 있는 Android 14 이상 기기에서 지원됩니다.

스타일러스 입력 기기가 없는 경우 다음 Android 디버그 브리지 (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

스타일러스를 지원하지 않는 기기를 사용하는 경우 테스트를 위해 Gboard 베타를 사용하세요.

추가 리소스