一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Android應(yīng)用程序----界面事件(按鍵事件)

 松林園 2021-05-11

Android系統(tǒng)中,存在多種界面事件,如點擊事件、觸摸事件、焦點事件和菜單事件等等 

在這些界面事件發(fā)生時,Android界面框架調(diào)用界面控件的事件處理函數(shù)對事件進行處理


按鍵事件 

MVC模型中,控制器根據(jù)界面事件(UI Event)類型不同,將事件傳遞給界面控件不同的事件處理函數(shù)。 

按鍵事件(KeyEvent)將傳遞給onKey()函數(shù)進行處理 

觸摸事件(TouchEvent)將傳遞給onTouch()函數(shù)進行處理


Android系統(tǒng)界面事件的傳遞和處理遵循一的規(guī)則 

如果界面控件設(shè)置了事件監(jiān)聽器,則事件將先傳遞給事件監(jiān)聽器 

如果界面控件沒有設(shè)置事件監(jiān)聽器,界面事件則會直接傳遞給界面控件的其他事件處理函數(shù) 

即使界面控件設(shè)置了事件監(jiān)聽器,界面事件也可以再次傳遞給其他事件處理函數(shù)


Android系統(tǒng)界面事件的傳遞和處理遵循一的規(guī)則 

是否繼續(xù)傳遞事件給其他處理函數(shù)是由事件監(jiān)聽器處理函數(shù)的返回值決定的 

如果監(jiān)聽器處理函數(shù)的返回值為true,表示該事件已經(jīng)完成處理過程,不需要其他處理函數(shù)參與處理過程,這樣事件就不會再繼續(xù)進行傳遞 

如果監(jiān)聽器處理函數(shù)的返回值為false,則表示該事件沒有完成處理過程,或需要其他處理函數(shù)捕獲到該事件,事件會被傳遞給其他的事件處理函數(shù)


EditText控件中的按鍵事件為例,說明Android系統(tǒng)界面事件傳遞和處理過程,假設(shè)EditText控件已經(jīng)設(shè)置了按鍵事件監(jiān)聽器 

當(dāng)用戶按下鍵盤上的某個按鍵時,控制器將產(chǎn)生KeyEvent按鍵事件 

Android系統(tǒng)會首先判斷EditText控件是否設(shè)置了按鍵事件監(jiān)聽器,因為EditText控件已經(jīng)設(shè)置按鍵事件監(jiān)聽器OnKeyListener,所以按鍵事件先傳遞到監(jiān)聽器的事件處理函數(shù)onKey()


事件能夠繼續(xù)傳遞給EditText控件的其他事件處理函數(shù),完全根據(jù)onKey()函數(shù)的返回值來確定 

如果onKey()函數(shù)返回false,事件將繼續(xù)傳遞,這樣EditText控件就可以捕獲到該事件,將按鍵的內(nèi)容顯示在EditText控件中 

如果onKey()函數(shù)返回true,將阻止按鍵事件的繼續(xù)傳遞,這樣EditText控件就不能夠捕獲到按鍵事件,也就不能夠?qū)存I內(nèi)容顯示在EditText控件中


Android界面框架支持對按鍵事件的監(jiān)聽,并能夠?qū)存I事件的詳細信息傳遞給處理函數(shù) 

為了處理控件的按鍵事件,先需要設(shè)置按鍵事件的監(jiān)聽器,并重載onKey()函數(shù)

示例代碼如下


1行代碼是設(shè)置控件的按鍵事件監(jiān)聽器 

3行代碼的onKey ()函數(shù)中的參數(shù) 

1個參數(shù)view表示產(chǎn)生按鍵事件的界面控件 

2個參數(shù)keyCode表示按鍵代碼 

3個參數(shù)keyEvent則包含了事件的詳細信息,如按鍵的重復(fù)次數(shù)、硬件編碼和按鍵標(biāo)志等 n5代碼onKey ()函數(shù)的返回值

返回true,阻止事件傳遞 

返回false,允許繼續(xù)傳遞按鍵事件


KeyEventDemo是一個說明如何處理按鍵事件的示例 

KeyEventDemo用戶界面 

最上方的EditText控件是輸入字符的區(qū)域 

中間的CheckBox控件用來控制onKey()函數(shù)的返回值 

最下方的TextView控件用來顯示按鍵事件的詳細信息,包括按鍵動作、按鍵代碼、按鍵字符、Unicode編碼、重復(fù)次數(shù)、功能鍵狀態(tài)、硬件編碼和按鍵標(biāo)志

界面的XML文件的代碼如下


EditText中,每當(dāng)任何一個鍵子按下或抬起時,都會引發(fā)按鍵事件 

為了能夠使EditText處理按鍵事件,需要使用setOnKeyListener ()函數(shù)在代碼中設(shè)置按鍵事件監(jiān)聽器,并在onKey()函數(shù)添加按鍵事件的處理過程


4行代碼用來獲取功能鍵狀態(tài)。功能鍵包括左Alt鍵、右Alt鍵和Shift鍵,當(dāng)這三個功能鍵被按下時,功能鍵代碼metaState值分別為18、3465;但沒有功能鍵被按下時,功能鍵代碼metaState值分別為0 

5行代碼獲取了按鍵的Unicode值,在第9行中,將Unicode轉(zhuǎn)換為字符,顯示在TextView 

7行代碼獲取了按鍵動作,0表示按下按鍵,1表示抬起按鍵。第7行代碼獲取按鍵的重復(fù)次數(shù),但按鍵被長時間按下時,則會產(chǎn)生這個屬性值 

13行代碼獲取了按鍵的硬件編碼,不同硬件設(shè)備的按鍵硬件編碼都不相同,因此該值一般用于調(diào)試 

14行獲取了按鍵事件的標(biāo)志符

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    成人精品日韩专区在线观看| 亚洲男女性生活免费视频| 91超频在线视频中文字幕| 加勒比系列一区二区在线观看| 免费福利午夜在线观看| 欧美区一区二在线播放| 自拍偷拍一区二区三区| 国产精品午夜性色视频| 精品国产亚洲av久一区二区三区 | 精品国产亚洲免费91| 午夜精品久久久免费视频| 亚洲少妇人妻一区二区| 精品亚洲一区二区三区w竹菊| 国产成人精品一区二区三区| 午夜色午夜视频之日本| 欧美日韩国产精品自在自线| 中国黄色色片色哟哟哟哟哟哟| 成人国产一区二区三区精品麻豆| 国产精品福利一二三区| 国产免费一区二区不卡| 欧美韩国日本精品在线| 天堂网中文字幕在线视频| 真实国产乱子伦对白视频不卡 | 丰满人妻一二三区av| 日本办公室三级在线观看| 国产亚洲精品久久久优势| 国产成人午夜福利片片| 久久这里只有精品中文字幕| 日本不卡在线视频中文国产| 蜜桃臀欧美日韩国产精品| 老司机激情五月天在线不卡| 久久精品少妇内射毛片| 欧美人妻少妇精品久久性色| 欧美日韩国产亚洲三级理论片| 国产级别精品一区二区视频 | 欧美六区视频在线观看| 国产精品伦一区二区三区在线| 激情三级在线观看视频| 四十女人口红哪个色好看| 人妻一区二区三区多毛女| 青草草在线视频免费视频|