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
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>
<!-- йцукенгшщзх&# -->
<Key android:codes="1081" android:keyLabel="й" android:keyEdgeFlags="left"/>
<Key android:codes="1094" android:keyLabel="ц"/>
<Key android:codes="1091" android:keyLabel="у"/>
<Key android:codes="1082" android:keyLabel="к"/>
<Key android:codes="1077,1105" android:keyLabel="е"/>
<Key android:codes="1085" android:keyLabel="н"/>
<Key android:codes="1075" android:keyLabel="г"/>
<Key android:codes="1096" android:keyLabel="ш"/>
<Key android:codes="1097" android:keyLabel="щ"/>
<Key android:codes="1079" android:keyLabel="з"/>
<Key android:codes="1093" android:keyLabel="х"/>
<Key android:codes="1098" android:keyLabel="ъ" android:keyEdgeFlags="right"/>
</Row>
<Row>
<!-- фывапролджэ -->
<Key android:codes="1092" android:keyLabel="ф" android:keyEdgeFlags="left"/>
<Key android:codes="1099" android:keyLabel="ы"/>
<Key android:codes="1074" android:keyLabel="в"/>
<Key android:codes="1072" android:keyLabel="а"/>
<Key android:codes="1087" android:keyLabel="п"/>
<Key android:codes="1088" android:keyLabel="р"/>
<Key android:codes="1086" android:keyLabel="о"/>
<Key android:codes="1083" android:keyLabel="л"/>
<Key android:codes="1076" android:keyLabel="д"/>
<Key android:codes="1078" android:keyLabel="ж"/>
<Key android:codes="1101" android:keyLabel="э" android:keyEdgeFlags="right"/>
</Row>
<Row>
<!-- ячсмитьбю -->
<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="я"/>
<Key android:codes="1095" android:keyLabel="ч"/>
<Key android:codes="1089" android:keyLabel="с"/>
<Key android:codes="1084" android:keyLabel="м"/>
<Key android:codes="1080" android:keyLabel="и"/>
<Key android:codes="1090" android:keyLabel="т"/>
<Key android:codes="1100" android:keyLabel="ь"/>
<Key android:codes="1073" android:keyLabel="б"/>
<Key android:codes="1102" android:keyLabel="ю"/>
<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>