안 드 로 이 드 키보드 개발 지식 총화

7309 단어 Android건반
먼저 쓸데없는 말 을 하고 키 보드 를 개발 하 는 이 유 를 말 해 보 세 요.예 를 들 어 재 태 크 제품,은행 등 app 클 라 이언 트 가 로그 인 할 때 특히 비밀 번 호 를 입력 하려 고 할 때 시스템 기본 입력 법 을 차단 하고 자신의 입력 법 으로 바 꿉 니 다!이것 은 안전 을 고려 하고 입력 된 소프트웨어 에 비밀 번 호 를 기록 하 는 것 을 방지 하 는 문제 입 니 다!그래서 안전성 이 높 은 app 은 비밀번호 등 을 모두 자신의 입력 법 으로 요구 하기 때문에 개발 에 대한 수요 가 있 습 니 다!
본론 으로 들 어가 면 이런 소프트웨어 판 을 개발 하려 면 어디서부터 시작 해 야 합 니까?
단계 1:
안 드 로 이 드 가 제공 하 는 데모 부터 볼 게 요.
소프트 키보드 의 데모 에 대해 서 는 다음 디 렉 터 리 에서 찾 을 수 있 습 니 다.
..\samples\android-22\legacy\SoftKeyboard
STEP 2:키보드 레이아웃
Demo 에서 알 수 있 듯 이 키보드 의 개발 과 인터페이스 개발 은 다 릅 니 다.키보드 도 레이아웃 이 필요 하지만 사용 하 는 레이아웃 파일 이 아니 라 xml 디 렉 터 리 에 있 는 파일 입 니 다.
먼저 보 자:
qwerty.xml 파일:

<Keyboard xmlns:android="http://schemas.android.com/apk/res/android"
 android:keyWidth="10%p"
 android:horizontalGap="0px"
 android:verticalGap="0px"
 android:keyHeight="@dimen/key_height"
 >

 <Row>
  <Key android:codes="113" android:keyLabel="q" android:keyEdgeFlags="left"/>
  <Key android:codes="119" android:keyLabel="w"/>
  <Key android:codes="101" android:keyLabel="e"/>
  <Key android:codes="114" android:keyLabel="r"/>
  <Key android:codes="116" android:keyLabel="t"/>
  <Key android:codes="121" android:keyLabel="y"/>
  <Key android:codes="117" android:keyLabel="u"/>
  <Key android:codes="105" android:keyLabel="i"/>
  <Key android:codes="111" android:keyLabel="o"/>
  <Key android:codes="112" android:keyLabel="p" android:keyEdgeFlags="right"/>
 </Row>

 <Row>
  <Key android:codes="97" android:keyLabel="a" android:horizontalGap="5%p" 
    android:keyEdgeFlags="left"/>
  <Key android:codes="115" android:keyLabel="s"/>
  <Key android:codes="100" android:keyLabel="d"/>
  <Key android:codes="102" android:keyLabel="f"/>
  <Key android:codes="103" android:keyLabel="g"/>
  <Key android:codes="104" android:keyLabel="h"/>
  <Key android:codes="106" android:keyLabel="j"/>
  <Key android:codes="107" android:keyLabel="k"/>
  <Key android:codes="108" android:keyLabel="l" android:keyEdgeFlags="right"/>
 </Row>

 <Row>
  <Key android:codes="-1" android:keyIcon="@drawable/sym_keyboard_shift" 
    android:keyWidth="15%p" android:isModifier="true"
    android:isSticky="true" android:keyEdgeFlags="left"/>
  <Key android:codes="122" android:keyLabel="z"/>
  <Key android:codes="120" android:keyLabel="x"/>
  <Key android:codes="99" android:keyLabel="c"/>
  <Key android:codes="118" android:keyLabel="v"/>
  <Key android:codes="98" android:keyLabel="b"/>
  <Key android:codes="110" android:keyLabel="n"/>
  <Key android:codes="109" android:keyLabel="m"/>
  <Key android:codes="-5" android:keyIcon="@drawable/sym_keyboard_delete" 
    android:keyWidth="15%p" android:keyEdgeFlags="right"
    android:isRepeatable="true"/>
 </Row>

 <Row android:rowEdgeFlags="bottom">
  <Key android:codes="-3" android:keyIcon="@drawable/sym_keyboard_done" 
    android:keyWidth="15%p" android:keyEdgeFlags="left"/>
  <Key android:codes="-2" android:keyLabel="123" android:keyWidth="10%p"/>
  <!--
   android:codes: -101 is not a framework-defined key code but a key code that is
   privately defined in com.example.android.softkeyboard.LatinKeyboardView.
  -->
  <Key android:codes="-101" android:keyIcon="@drawable/sym_keyboard_language_switch"
    android:keyWidth="10%p"/>
  <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space" 
    android:keyWidth="30%p" android:isRepeatable="true"/>
  <Key android:codes="46,44" android:keyLabel=". ,"
    android:keyWidth="15%p"/>
  <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return" 
    android:keyWidth="20%p" android:keyEdgeFlags="right"/>
 </Row>
</Keyboard>
분석 해 보 세 요:
1>상기 코드 를 통 해 알 수 있 듯 이 레이아웃 은 주로 Keyboard 의 파일 에서 이 루어 집 니 다.각 줄 은로 시작 하고 끝 납 니 다.키 는를 시작 노드 로 하고 키 보드 는 감청 키 의 디지털 코드 를 주요 감청 대상 으로 합 니 다.label 은 키보드 의 표시 라벨 일 뿐 입 니 다.
2>키보드 노드 의 속성 android:key Width="10%p"은 키 키 의 노드 에 이 속성 이 없 으 면 전체 화면 너비 의 10%너비 이 고 키 의 노드 에 이 속성 이 있 으 면 키 의 노드 속성 을 최종 값 으로 한다.
3>key 노드 속성 에서 android:codes="46,44",codes 는 두 개 입 니 다.첫 번 째 클릭 은 46 의 문자열 이 고 두 번 째 클릭 은 44 의 문자열 이 며 두 번 째 클릭 은 1 초 간격 입 니 다.
STEP 3:분석 코드
키보드 구성 요 소 는 Keyboard View 를 계승 하고 사용자 정의 로 키보드 클래스 를 사용 하여 키보드 레이아웃 파일 을 불 러 오고 Keyboard View.setKeyboard(Keyboard keyboard)를 통 해 레이아웃 을 View 에 할당 합 니 다.구체 적 으로 다음 과 같다.
1>키보드 클래스 로 xml 파일 불 러 오기:

Keyboard keyboard=new Keyboard(context, R.xml.qwerty);
2>Keyboard 를 view 에 할당 하고 Keyboard View 의 방법 으로 setKeyboard 할당

setKeyboard(keyboard);
단계 4 View 에 감청 이벤트 설정
감청 이벤트 setOnKeyboard ActionListener 를 설정 하여 onKey 를 실현 하 는 방법,
STEP 5:EditText 필드 레이아웃 사용
지정 한 입력 법 을 사용 하 는 Activity 레이아웃 에 다음 코드 를 추가 합 니 다.

<RelativeLayout
  android:layout_width="fill_parent"
  android:layout_height="wrap_content" >

  <android.inputmethodservice.KeyboardView
   android:id="@+id/keyboard_view"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:layout_alignParentBottom="true"
   android:focusable="true"
   android:focusableInTouchMode="true"
   android:background="@color/lightblack"
   android:keyBackground="@drawable/btn_keyboard_key" 
   android:keyTextColor="@color/white"
   android:visibility="gone" />
 </RelativeLayout>
1>키 보드 를 개발 할 때 다음 과 같은 문제 가 발생 합 니 다.

클릭 한 팝 업 은 글꼴 이 흰색 이 고 검은색 일 때 가 있 으 며 주제 와 관련 이 있 습 니 다.해결 방법:
KeyboardView 는 키보드 의 레이아웃 파일 을 미리 볼 수 있 는 속성 이 있 습 니 다.TextView 를 레이아웃 파일 의 루트 노드 로 정의 할 수 있 습 니 다.
2>미리 보기 레이아웃 파일 의 Popup 높이 가 너무 높 습 니 다.어떻게 조정 하 시 겠 습 니까?사각형 으로 조정 하 시 겠 습 니까?
Keyboard View 는 미리 보기 액 높이 를 조정 할 수 있 는 속성 이 있 습 니 다.

좋은 웹페이지 즐겨찾기