freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

android平臺中文輸入法的設計和實現(xiàn)碩士學位論文-資料下載頁

2025-06-19 13:56本頁面
  

【正文】 供的是逗號分割的多個值則和普通手機輸入鍵盤一樣 在多個值之間切換;android:keyLabel 設置該按鍵顯示的文本內容;android:keyEdgeFlags 設置該按鍵的對齊指令,取值為left或則right;android:keyIcon 設置該按鍵顯示的圖標內容,如果指定了該值則在顯示的時候顯示為圖片不顯示文本;android:isRepeatable 設置該按鍵是否是可重復的,如果長按該鍵可以觸發(fā)重復按鍵事件則為true,否則為false。還可以設置其他的一些屬性。虛擬鍵盤布局文件部分代碼如下:Row Key android:codes=63 android:keyLabel=\u003F android:keyWidth=10%p android:keyEdgeFlags=left/ Key android:codes=32 android:keyIcon=@drawable/sym_keyboard_space android:keyWidth=10%p android:isRepeatable=true/ Key android:codes=5 android:keyIcon=@drawable/sym_keyboard_delete android:keyEdgeFlags=right android:isRepeatable=true/…/Row當用戶啟用縱橫輸入時,應用程序通過調用函數(shù)createKeyFromXml()從XML文件中讀取鍵盤布局集并且創(chuàng)建鍵盤界面,使用函數(shù)getResources().getXml()從XML文件中獲得XML資源,為了能夠在Java代碼中使用XML資源的內容。在實現(xiàn)Android平臺下縱橫輸入法的過程中,我們定義了以下幾個XML文件,用于存儲虛擬鍵盤信息,它們分別為:,為搜索管理提供配置信息;,英文字符的全鍵盤布局文件;,數(shù)字、標點的全鍵盤布局文件;,中文輸入法的漢字鍵盤布局文件。 初始化輸入法在開發(fā)輸入法之前,需要新建并初始化輸入法所需要的實例對象,如鍵盤視圖的實例對象等。所有初始化的過程主要是通過重載InputMethodService類的onInitializeInterface()函數(shù)和onCreate()函數(shù)來實現(xiàn)的。onCreate函數(shù)代碼如下:@Override public void onCreate() {()。 mWordSeparators=getResources().getString()。}其中getResources().getString()。為了生成鍵盤視圖的實例,需要在初始化時構造鍵盤視圖的實例對象(鍵盤實例的類型為自定義的LatinKeyboard類型)。由上文可知,鍵盤視圖設計是以XML文件形式存儲在res\xml文件夾下的。通過LatinKeyboard的構造函數(shù),實例化不同鍵盤視圖對象時,需要提供res\xml下不同的鍵盤視圖資源名稱,通過該名稱可以獲得鍵盤的資源文件。在onInitializeInterface()中實例對象的代碼如下:@Override public void onInitializeInterface() {//中文軟鍵盤實例mZhhzKeyboard = new LatinKeyboard(this, )。 //符號數(shù)字軟鍵盤實例 mSymbolsKeyboard = new LatinKeyboard(this,)。 mSymbolsShiftedKeyboard = new LatinKeyboard(this, )。 //字母軟鍵盤實例 mAlphabetKeyboard = new LatinKeyboard(this, )。 }通過以上語句可以生成輸入法所需要的中文鍵盤、符號數(shù)字鍵盤和字母鍵盤的實例。 消息捕獲與傳遞輸入法應用程序通過getCurrentInputConnection()獲得當前與客戶端的連接實例,當應用程序需要將文字等輸入法處理過的內容,反饋給客戶端控件時,調用mitText函數(shù)即可。InputConnectionic=getCurrentInputConnection()。//獲取InputConnection接口 if(ic!=null){ ()。//開始輸入編輯操作 if(isShifted()){ text=().toUpperCase()。 } (text,1)。//將text字符輸入文本框,并且將關標移至字符做插入態(tài) ()。//完成編輯輸入 }所有的IME客戶端都要綁定BIND_INPUT_METHOD ,只有獲得了系統(tǒng)BIND_INPUT_METHOD權限許可才可以訪問IME的InputMethod接口,這是IMF出于對安全的角度的考量,對使用InputMethodService的一個所有客戶端的強制要求。否則系統(tǒng)會拒絕此客戶端使用InputMethod。serviceandroid:name=IMEandroid:label=@string/SoftkeyIMEandroid:permission=在InputMethod接口中定義有如下函數(shù):bindInput (InputBinding binding) 綁定一個一個應用至輸入法;createSession ( callback) 創(chuàng)建一個新的InputMethodSession 用于客戶端與輸入法的交互;startInput (InputConnection inputConnection, EditorInfo info) 輸入法準備就緒開始接受各種事件并且將輸入的文本返回給應用程序;unbindInput () 取消應用程序和輸入法的綁定;showSoftInput (int flags, ResultReceiver resultReceiver) 和hideSoftInput (int flags, ResultReceiver resultReceiver) 顧名思義是顯示和隱藏軟鍵盤輸入。 消息處理初始化完畢后,第一個將會執(zhí)行的就是onStartInput方法,在該方法里,輸入法被被綁定到了客戶端,接收所有關于編輯對象的詳細信息。代碼如下:(this)。(mZhhzKeyboard)。 第二個執(zhí)行的方法是onCreateInputView,在用戶輸入的區(qū)域要顯示時,這個方法由框架調用,輸入法首次顯示時,或者配置信息改變時,該方法就會被執(zhí)行。在該方法中,對輸入視圖(input view)進行初始化:讀取布局文件信息,設置onKeyboardActionListener,并初始設置keyboard。代碼如下:mInputView = (KeyboardView) getLayoutInflater().inflate(, null)。(this)。(mZhhzKeyboard)。第三個執(zhí)行的方法是onCreateCandidatesView,在要顯示候選詞匯的視圖時,由框架調用。和onCreateInputView類似。在這個方式中,對候選字視圖(candidateview) 進行初始化。代碼如下:mCandidateView = new CandidateView(this)。(this)。第四個執(zhí)行的方法,也是最后一個方法,即onStartInputView,正是在這個方法中,將inputview和當前keyboard重新關聯(lián)起來。代碼如下:(mCurKeyboard)。()。在上面的四個方法中,onCreateInputView和onCreateCandidatesView兩個方法只有在初始化時才會執(zhí)行一次,除非有配置信息發(fā)生改變。根據InputMethodService的API文檔,可以看到方法onConfigurationChanged主要負責配置更改的情況。Android輸入法框架提供了內部靜態(tài)接口OnKeyboardActionListener ,可以通過調用getOnKeyboardActionListener()監(jiān)聽應用程序鍵盤操作。調用onStartInputView函數(shù)將界面顯示出來之后,輸入法將會調用onStartInput函數(shù),開始正式的輸入,當輸入一個鍵后,監(jiān)聽接口就會監(jiān)聽到按鍵消息,接著會調用回調函數(shù)onKey,執(zhí)行具體操作??v橫輸入法可以實現(xiàn)字母、漢字、數(shù)字以及符號等的輸入,同時也可以接受其他的消息,比如:刪除、全屏控制、空格等。若接收到的消息為指定的符號,如空格、分號、冒號等等,直接調用 getCurrentInputConnection().mitText方法,將其遞交給客戶端。若接收到的消息為關閉當前輸入法的命令,則調用handleclose()關閉當前輸入法。其中handleclose()函數(shù)相關代碼如下:private void handleClose() {//關閉當前連接對象,關閉輸入視圖 mitTyped(getCurrentInputConnection())。 requestHideSelf(0)。 ()。 }若接收到的消息為切換輸入視圖界面消息時,則在字母輸入視圖,符號輸入視圖和中文輸入視圖之間進行切換。部分代碼如下所示。//keyBoard類型變量current用來存放當前將要顯示的虛擬鍵盤布局//用current鍵盤來設置當前輸入視圖,即可完成輸入界面的切換()。setCandidatesViewShown(false)。 (current)若接收到的消息為刪除鍵消息時,輸入法應用程序根據當前輸入框中輸入碼的個數(shù)選擇進行相關操作。若輸入碼長度為1則清空輸入碼并隱藏輸入界面,若長度大于1,則刪除輸入碼最后一位,繼續(xù)進行碼本查詢操作,并返回候選字詞。代碼如下所示。if (length 1) { //mComposing為當前輸入框中的輸入碼字符串 //如果輸入碼字符串長度大于1 //刪除輸入碼最后一位(length 1, length)。//查詢字詞碼本,并將查詢出的候選字詞顯示出來zhhz_delete()。} else {//如果輸入碼字符串長度等于1//將輸入碼字符串長度設為0,隱藏輸入界面(0)。()。setCandidatesViewShown(false)。} 若接收到的消息不為以上所有類型,則調用handleCharacter函數(shù),將接收到的消息直接提交給輸入法,進行進一步的處理。因此,消息接收處理函數(shù)onKey的偽代碼如下。public void onKey(int primaryCode, int[] keyCodes) { if (isWordSeparator(primaryCode)) {//判斷是否為指定符號(空格,分號,冒號等)分隔符//執(zhí)行該按鍵的自身操作(輸入空格、冒號等) sendKey(primaryCode)。 } else if (primaryCode == ) {//判斷刪除鍵,執(zhí)行刪除操作; }else if (primaryCode == ) {//判斷輸入法切換鍵,執(zhí)行切換輸入法操作 } else if (primaryCode == ) { //判斷關閉輸入法鍵,執(zhí)行關閉輸入法操作 }else if(primaryCode == amp。amp。 mInputView != null) {//判斷輸入法鍵盤切換鍵,執(zhí)行輸入法內鍵盤視圖間的切換//鍵盤視圖有中文輸入鍵盤、字母鍵盤、符號數(shù)字鍵盤 } else { //除了以上情況外,對鍵值進行正常處理,包括根據數(shù)字碼查漢字、提交輸入信息等。 handleCharacter(primaryCode, keyCodes)。 }其中,函數(shù)handleCharacter的參數(shù):primaryCode存儲的當前按鍵的鍵碼值,keyCodes存儲候選替換值。 數(shù)據查找與反饋當前鍵盤為中文輸入鍵盤并且輸入的鍵值為數(shù)字時,便會調用handleCharacter函數(shù)查詢字詞碼本。根據input view中的輸入碼,在碼本中查詢到對應的字詞,并調用setSuggestions函數(shù),在候選視圖繪制顯示出來。當在客戶端輸入控件中輸入數(shù)字時,輸入法應用判斷當前輸入控件中是否已經有數(shù)字輸入碼,若已有數(shù)字,則將新輸入的數(shù)字添加到原來數(shù)字輸入碼之后,然后調用輸入法查詢碼本函數(shù)。查詢碼本流程等上文已作具體闡述,不再多做解
點擊復制文檔內容
高考資料相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1