setDefaultKeyMode 用法介紹

2021-08-25 13:39:11 字數 1938 閱讀 4099

setdefaultkeymode (int mode) 用來設定乙個activity的預設的按鍵模式,

也就是指這種情況,當activity中發生了一些按鍵事件,但是這些事件沒有被任何控制項listen到時(截獲時),

系統應該如何處理這些按鍵事件。

mode一共有五種

first of all,首先要告訴大家乙個不幸的訊息,上述的預設鍵動作完全不支援中文。

也就是說如果處於中文輸入狀態,那麼按鍵都會被理解為試圖輸入中文,而當輸入完成後產生的中文,也不會進行預設按鍵處理。

所以在我下面的例子中,如果必要,我會呼出軟鍵盤把輸入模式改為英文。

以下分別解釋

default_keys_disable

直接丟棄,這種情況你把鍵盤按穿了也不會有系統理你

default_keys_dialer

將鍵盤事件傳入撥號器進行處理,例如如下**:

這就是乙個最最簡單的android工程預設的helloworld模板,

我們只增加了一句話:setdefaultkeymode(default_keys_dialer);

啟動這個程式,螢幕上只有一行helloworld,但是我們輸入123456,看看會發生什麼。

default_keys_shortcut:

將鍵盤輸入作為當前窗體上註冊的快捷鍵,進行快捷鍵處理,

舉個例子,如果當前選單項註冊了快捷鍵,則可以在不撥出選單的情況下,將鍵盤輸入作為選單快捷鍵處理

關於此種情況的實現分析和驗證例子請看我寫的

default_keys_shortcut 功能的驗證 及其 原始碼實現分析

位址是:

default_keys_search_local:

將鍵盤輸入作為搜尋內容,進行本地搜尋,如果本地沒有實現自定義搜尋,則使用全域性搜尋

為了驗證這種設定,首先注意我們必須實現乙個自定義搜尋,關於如何實現自定義搜尋,請看我寫的

android 自定義搜尋 的簡單實現

位址是:

其次我們必須保證當前處於英文輸入模式,可以通過呼出乙個軟鍵盤來改變當前輸入模式。

確保上述要求實現後,我們輸入任意按鍵,會發現系統直接呼出我們自定義的搜尋介面,如下圖所示:

注意這是乙個我們自定義的搜尋,標題被我改為了my search (注意這裡我沒有新增自定義搜尋建議欄)

default_keys_search_global:

將鍵盤輸入作為搜尋內容,進行全域性搜尋

保證當前處於英文輸入模式,可以通過呼出乙個軟鍵盤來改變當前輸入模式。

確保上述要求實現後,我們輸入任意按鍵,會發現系統直接呼出系統的全域性搜尋介面(也就是google的web搜尋),如下圖所示:

注意已經沒有了my search字樣,而且全域性搜尋是有搜尋建議欄的。(當然自定義搜尋也可以實現自定義搜尋建議欄)

總結:activity提供的預設按鍵功能其實非常強大,可以把預設按鍵傳入撥號、傳入搜尋、作為選單快捷鍵等等,

在特定的應用場景下,會帶來一些非常神奇和良好的使用者感受。

但是非常可惜的是,完全不支援中文,因此對於我們中國開發者來講,其實用性幾乎等於零了。

不過了解其特殊的功能和用法,也許在一些特定的應用場景下,會帶來意外的便利呢。

Linux下patch和diff的用法介紹

1 7z安裝 如果ubuntu中沒有安裝7z軟體,則可通過下列命令進行安裝 sudo apt get install p7zip p7zip full p7zip rar 2 7z解壓 一般而言推薦選用 7z x 壓縮檔案 7z來解壓,因為其是將壓縮檔案解壓到壓縮包命名的目錄下,即解壓到當前資料夾。...

php檔案上傳之 FILES全域性變數用法介紹

檔案上傳表單的處理 如下 複製 我們來看看files的變數的用法 files myfile error 和該檔案上傳相關的錯誤 error 是在 php 4.2.0 版本中增加的。下面是它的說明 它們在php3.0以後成了常量 upload err ok 值 0 沒有錯誤發生,檔案上傳成功。uplo...

Geodatabase ToolSet的介紹與使用

geodatabasetoolset簡稱為gdbt,是 esri 官網提供的免費工具,在 catalog 中用來協助監測 了解 報告多使用者地理資料庫的工具。用 gdbt 可以協助監測地理資料庫每天的健康狀況,更詳盡的了解資料庫的效能,並進行資料庫效能調優。gdbt 工作與sql server or...