정보공간_1

[4기 전주 김재호] 안드로이드 소프트웨어 키보드#4 - 이벤트 처리 본문

IT 놀이터/Elite Member Tech & Talk

[4기 전주 김재호] 안드로이드 소프트웨어 키보드#4 - 이벤트 처리

알 수 없는 사용자 2013. 12. 5. 07:25

안녕하세요 22-2기 김재호입니다.

지금까지는 안드로이드 키보드를 초기화 하고 디자인 하는 방법을 살펴보았습니다.


이제 만들어진 키보드 뷰에서 키 입력을 받고 그 키 입력을 통하여 문자를 텍스트 입력창에 입력시키는 방법을 알아보도록 하겠습니다.

입력되어야 하는 문자에 따라 키보드의 모양이 바뀌는 경우가 있습니다. 전화번호 등 숫자만을 입력할 경우에는 숫자 키보드를 보여주거나 전화번호를 입력하는 경우 전화번호용 키패드를 보여줄 수 도 있습니다. 패스워드를 입력할 경우에는 노출시키지 않아야 하기 때문에 추천단어 기능을 끄고 입력되는 텍스트를 저장해서는 안 됩니다.


이런 기능은 EditorInfo라는 클래스의 inputType을 통해서 얻을 수 있습니다.

안드로이드에는 다음과 같은 입력 타입이 있습니다.


상수

설명

TYPE_CLASS_NUMBER

숫자

TYPE_CLASS_DATETIME

날짜와 시간

TYPE_CLASS_PHONE

전화번호

TYPE_CLASS_TEXT

모든 글자

TYPE_TEXT_VARIATION_PASSWORD

패스워드 필드-텍스트 숨김, 저장 안함


다음과 같이 초기화 후 EditorInfo 클래스를 사용하여 필요한 키보드의 종류를 알 수 있습니다.



그 후에는 SetKeyboard를 이용하여 표시할 키보드를 정할 수 있습니다.



OnStartInput 메서드의 매개변수로 EditorInfo 클래스가 있으며 EditorInfo 클래스의 inputType 변수를 통해 표시할 키보드의 종류를 알 수 있습니다.


알맞은 키보드를 표시한 후에는 조합 과정이 필요합니다. 단순히 키를 누를 때마다 바로 문자를 입력하는 단순 쿼티 키보드의 경우 조합 과정이 필요 없을 수 있습니다. 하지만 단어 예측 기능을 지원하려고 하거나 한글 키보드와 같이 여러 키의 입력을 조합해야만 하나의 문자를 완성할 수 있는 언어용 키보드의 경우, 즉 대부분의 키보드는 조합을 통해서 문자 입력 기능을 수행하게 됩니다.


안드로이드에서는 조합 기능(Composing)을 위하여 조합 과정 후 Commit 을 통해 문자를 텍스트 입력 위젯으로 전송할 수 있습니다.

SetComposingText 를 사용하여 조합중인 문자를 텍스트 위젯에 표시할 수 있습니다.



예를 들어 ‘한’이라는 글자를 표시하는 경우 ㅎ, ㅏ, ㄴ 키를 쿼티 키보드 모드에서 순서대로 눌렀다고 할때,

  1. setComposingText(“ㅎ”)

  2. setComposingText(“하”)

  3. setComposingText(“한”)


setComposingText를 호출할 때마다 조합중인 텍스트가 갱신되게 됩니다.

만약 USB 키보드가 연결되었다거나 해서 하드웨어 입력이 들어오는 경우 터치 키 이벤트만으로는 처리할 수 없으며

onKeyDown과 onKeyUp 메서드를 오버라이드 하면 하드웨어 키 이벤트를 처리할 수 있습니다.





이제 글자를 표시하는 방법까지 알아보았고 다음에는 키를 입력할 때마다 변화해야 하는 경우에 대하여 알아보도록 하겠습니다.