RussianIME 全程解析2

1 .If you create one softime,you should extend android .inputmethodservice.InputMethodService,this class provides a basic implemention of softinputmethod.

2 . RussianIME life cycle


 

 

3 Inputmethod UI

 

In the inputmethod,there are two UI styles,softkeyboard and candidate area,that is keyboard view&candidate view.

 

keyboard view: is the place that people input the word,when inputmethod is displayed (when inputmethod display in the forst time),the InputMethodService.onCreateInputView() will be called.

(是用户输入文字的地方,当输入法被显示的时候(当输入法第一次展现的时 候)会调用InputMethodService.onCreateInputView().)
Candidates View:is used to provider the input option ,is the place of all the candidate word to display. It can be null,it can return null when call nputMethodService.onCreateCandidatesView().

(是用来提供输入选择,是候选词汇集合出现的地方。其可有可无,可以在调用是候选词汇集合出现的地方。其可有可无,可以在调用InputMethodService.onCreateCandidatesView时返 回null,–这是它的默认行为。)

 

InputMethodService.java   /android_src/frameworks/base/core/java/android /inputmethodservice/

 

 

4 Design different input style

 

 email

 text

 URl

 based on the xml design

 

russian-qwerty.xml

<?xml version="1.0" encoding="utf-8"?>

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

        <!-- generic top row -->
    <Row>
    <!-- &#1081;&#1094;&#1091;&#1082;&#1077;&#1085;&#1075;&#1096;&#1097;&#1079;&#1093;&# -->
        <Key android:codes="1081" android:keyLabel="&#1081;" android:keyEdgeFlags="left"/>
        <Key android:codes="1094" android:keyLabel="&#1094;"/>
        <Key android:codes="1091" android:keyLabel="&#1091;"/>
        <Key android:codes="1082" android:keyLabel="&#1082;"/>
        <Key android:codes="1077,1105" android:keyLabel="&#1077;"/>
        <Key android:codes="1085" android:keyLabel="&#1085;"/>
        <Key android:codes="1075" android:keyLabel="&#1075;"/>
        <Key android:codes="1096" android:keyLabel="&#1096;"/>
        <Key android:codes="1097" android:keyLabel="&#1097;"/>
        <Key android:codes="1079" android:keyLabel="&#1079;"/>
        <Key android:codes="1093" android:keyLabel="&#1093;"/>
        <Key android:codes="1098" android:keyLabel="&#1098;" android:keyEdgeFlags="right"/>
        </Row>

    <Row>
    <!-- &#1092;&#1099;&#1074;&#1072;&#1087;&#1088;&#1086;&#1083;&#1076;&#1078;&#1101; -->
        <Key android:codes="1092" android:keyLabel="&#1092;" android:keyEdgeFlags="left"/>
        <Key android:codes="1099" android:keyLabel="&#1099;"/>
        <Key android:codes="1074" android:keyLabel="&#1074;"/>
        <Key android:codes="1072" android:keyLabel="&#1072;"/>
        <Key android:codes="1087" android:keyLabel="&#1087;"/>
        <Key android:codes="1088" android:keyLabel="&#1088;"/>
        <Key android:codes="1086" android:keyLabel="&#1086;"/>
        <Key android:codes="1083" android:keyLabel="&#1083;"/>
        <Key android:codes="1076" android:keyLabel="&#1076;"/>
        <Key android:codes="1078" android:keyLabel="&#1078;"/>
        <Key android:codes="1101" android:keyLabel="&#1101;" android:keyEdgeFlags="right"/>
    </Row>

    <Row>
    <!-- &#1103;&#1095;&#1089;&#1084;&#1080;&#1090;&#1100;&#1073;&#1102; -->
        <Key android:codes="-1" android:keyIcon="@drawable/sym_keyboard_shift"
                android:keyWidth="12%p" android:isModifier="true"
                android:iconPreview="@drawable/sym_keyboard_feedback_shift"
                android:isSticky="true" android:keyEdgeFlags="left"/>
        <Key android:codes="1103" android:keyLabel="&#1103;"/>
        <Key android:codes="1095" android:keyLabel="&#1095;"/>
        <Key android:codes="1089" android:keyLabel="&#1089;"/>
        <Key android:codes="1084" android:keyLabel="&#1084;"/>
        <Key android:codes="1080" android:keyLabel="&#1080;"/>
        <Key android:codes="1090" android:keyLabel="&#1090;"/>
        <Key android:codes="1100" android:keyLabel="&#1100;"/>
        <Key android:codes="1073" android:keyLabel="&#1073;"/>
        <Key android:codes="1102" android:keyLabel="&#1102;"/>
        <Key android:codes="-5" android:keyIcon="@drawable/sym_keyboard_delete"
                android:keyWidth="12%p" android:keyEdgeFlags="right"
                android:iconPreview="@drawable/sym_keyboard_feedback_delete"
                android:isRepeatable="true"/>
    </Row>

    <!-- Generic bottom row -->
    <Row android:keyboardMode="@+id/mode_normal" android:rowEdgeFlags="bottom">
        <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
                android:popupKeyboard="@xml/kbd_popup_template"
                android:popupCharacters=""
                android:keyWidth="20%p" android:keyEdgeFlags="left"/>
        <Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_gb"
                android:iconPreview="@drawable/sym_keyboard_feedback_gb"
                android:keyWidth="15%p"/>
        <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
                android:iconPreview="@drawable/sym_keyboard_feedback_space"
                android:keyWidth="30%p" android:isRepeatable="true"/>
        <Key android:codes="46,44" android:keyLabel=". ,"
                android:popupKeyboard="@xml/popup_punctuation" android:keyWidth="15%p"/>
        <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
                android:iconPreview="@drawable/sym_keyboard_feedback_return"
                android:keyWidth="20%p" android:keyEdgeFlags="right"/>
    </Row>
     <Row android:keyboardMode="@+id/mode_url" android:rowEdgeFlags="bottom">
        <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
                android:popupKeyboard="@xml/kbd_popup_template"
                android:popupCharacters=""
                android:keyWidth="20%p" android:keyEdgeFlags="left"/>
        <Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_gb"
                android:iconPreview="@drawable/sym_keyboard_feedback_gb"
                android:keyWidth="15%p"/>
        <Key android:keyLabel=".com" android:keyOutputText=".com"
                android:popupKeyboard="@xml/popup_domains"
                android:keyWidth="15%p"/>
        <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
                android:iconPreview="@drawable/sym_keyboard_feedback_space"
                android:keyWidth="15%p" android:isRepeatable="true"/>
        <Key android:codes="46,47" android:keyLabel=". /"
                android:popupKeyboard="@xml/popup_punctuation" android:keyWidth="15%p"/>
        <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
                android:iconPreview="@drawable/sym_keyboard_feedback_return"
                android:keyWidth="20%p" android:keyEdgeFlags="right"/>
    </Row>
    <Row android:keyboardMode="@+id/mode_email" android:rowEdgeFlags="bottom">
        <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
                android:popupKeyboard="@xml/kbd_popup_template"
                android:popupCharacters=""
                android:keyWidth="20%p" android:keyEdgeFlags="left"/>
        <Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_gb"
                android:iconPreview="@drawable/sym_keyboard_feedback_gb"
                android:keyWidth="15%p"/>
        <Key android:keyLabel="/@" android:keyWidth="15%p"/>
        <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
                android:iconPreview="@drawable/sym_keyboard_feedback_space"
                android:keyWidth="15%p" android:isRepeatable="true"/>
        <Key android:codes="46,44" android:keyLabel=". ,"
                android:popupKeyboard="@xml/popup_punctuation" android:keyWidth="15%p"/>
        <Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
                android:iconPreview="@drawable/sym_keyboard_feedback_return"
                android:keyWidth="20%p" android:keyEdgeFlags="right"/>
    </Row>
    <Row android:keyboardMode="@+id/mode_im" android:rowEdgeFlags="bottom">
        <Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
                android:popupKeyboard="@xml/kbd_popup_template"
                android:popupCharacters=""
                android:keyWidth="20%p" android:keyEdgeFlags="left"/>
        <Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_gb"
                android:iconPreview="@drawable/sym_keyboard_feedback_gb"
                android:keyWidth="15%p"/>
        <Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
                android:iconPreview="@drawable/sym_keyboard_feedback_space"
                android:keyWidth="30%p" android:isRepeatable="true"/>
        <Key android:codes="46,44" android:keyLabel=". ,"
                android:popupKeyboard="@xml/popup_punctuation" android:keyWidth="15%p"/>
        <Key android:keyLabel=":-)" android:keyOutputText=":-) "
                android:popupKeyboard="@xml/popup_smileys"
                android:keyWidth="20%p" android:keyEdgeFlags="right"/>
    </Row>
   </Keyboard>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值