日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Android交互體驗(yàn)必知:功能按鍵事件

[[70003]]

創(chuàng)新互聯(lián)公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元呼倫貝爾做網(wǎng)站,已為上家服務(wù),為呼倫貝爾各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18980820575

【獨(dú)家譯文】本文為翻譯自外文網(wǎng)站tutsplus.com的《Android交互體驗(yàn)必知:功能按鍵事件》。以下為全部譯文:

開始學(xué)習(xí)

每一種Android設(shè)備一般都會(huì)提供除字母和數(shù)字外的物理功能按鍵,這一般是根據(jù)不同的Android制造商而有所不同,比如Sony就只實(shí)現(xiàn)了這些功能按鍵中的三種而已。這些功能按鍵如果設(shè)計(jì)良好,對(duì)于正在開發(fā)的app應(yīng)用,能給用戶帶來很好交互體驗(yàn)。

Android應(yīng)用主要是基于Activities的設(shè)計(jì),這個(gè)相信大多數(shù)開發(fā)者都已經(jīng)十分熟悉,并可以在官方開發(fā)手冊中學(xué)習(xí)到。而今天我們準(zhǔn)備學(xué)習(xí)的是如何通過實(shí)現(xiàn)KeyEvent.Callback這個(gè)接口從而能重新定義Android設(shè)備上的功能按鍵,為我們開發(fā)的應(yīng)用服務(wù)。

功能按鍵的常量定義和方法

KeyEvent類有多個(gè)定義好的key常量,表示一個(gè)標(biāo)準(zhǔn)的Android設(shè)備中的功能按鍵,列表入下:

功能按鍵

常量定義

描述

Power

KEYCODE_POWER

打開設(shè)備或者將設(shè)備喚醒

Back

KEYCODE_BACK

回到上一屏(頁)

Home

KEYCODE_HOME

返回主菜單(屏幕)

SEARCH

KEYCODE_SEARCH

打開一個(gè)搜索

CAMERA

KEYCODE_CAMERA

打開攝像頭功能

VOLUME

KEYCODE_VOLUME_UP

KEYCODE_VOLUME_DOWN

調(diào)節(jié)音量大小

讀者可以從官方文檔中,找到更多關(guān)于功能按鍵的常量定義,以上列表的只是常用的幾個(gè)。

對(duì)于功能按鍵的調(diào)用,常用的回調(diào)方法有入下幾個(gè):

 
 
 
 
  1. onKeyDown() 
  2. onKeyUp() 
  3. onKeyLongPress() 

而對(duì)于設(shè)備中的軌跡球或者觸摸屏幕,常用的回調(diào)方法有入下幾個(gè):

 
 
 
 
  1. onTrackballEvent() 
  2. onTouchEvent() 

開發(fā)者可以選擇只實(shí)現(xiàn)上面談到的某些回調(diào)方法即可,不需要全部都實(shí)現(xiàn)。例如,如果想避免用戶偶然按下了CAMERA或者SEARCH檢索的功能鍵,則只需要在onKeyDown()的回調(diào)方法中進(jìn)行編寫代碼控制,并返回true的值,讓系統(tǒng)知道當(dāng)前捕捉的是onkeyDown事件即可。

關(guān)于特殊的鍵

然而,有些特殊的鍵是開發(fā)者沒有辦法去重新定制的,因?yàn)樗鼈冎苯佑上到y(tǒng)去調(diào)用,比如象power和home鍵,BACK回退鍵也是特殊鍵之一,盡管如果開發(fā)者要重新定制其行為的話,可以重新覆寫onBackPressed()方法,但在一般情況下,強(qiáng)烈不建議開發(fā)者這樣去做,因?yàn)榛赝随I本身功能是回到上一屏的,重新定制的話會(huì)給用戶帶來很多困擾。

下面我們就以一個(gè)具體例子說明如何定制這些功能鍵。

步驟1建立Android工程

首先打開eclipse,選擇新建立一個(gè)Android功能,將工程命名為KeyControl,選擇使用Android2.1版本的SDK,***點(diǎn)FINISH完成創(chuàng)建,如下圖:

步驟2重寫onKeyDown()方法

首先學(xué)習(xí)重寫onKeyDown()方法,代碼如下:

 
 
 
 
  1.  @Override 
  2. public boolean onKeyDown(int keyCode, KeyEvent event) { 
  3. switch(keyCode){ 
  4. case KeyEvent.KEYCODE_MENU: 
  5. Toast.makeText(this, "Menu key pressed", Toast.LENGTH_SHORT).show(); 
  6. return true; 
  7. case KeyEvent.KEYCODE_SEARCH: 
  8. Toast.makeText(this, "Search key pressed", Toast.LENGTH_SHORT).show(); 
  9. return true; 
  10. case KeyEvent.KEYCODE_BACK: 
  11. onBackPressed(); 
  12. return true; 
  13. case KeyEvent.KEYCODE_VOLUME_UP: 
  14. event.startTracking(); 
  15. return true; 
  16. case KeyEvent.KEYCODE_VOLUME_DOWN: 
  17. Toast.makeText(this,"Volumen Down pressed", Toast.LENGTH_SHORT).show(); 
  18. return false; 
  19. return super.onKeyDown(keyCode, event); 

在上面的代碼中,在onKeyDown方法中,分別根據(jù)keycode去判斷觸發(fā)的是哪個(gè)功能鍵,例如菜單menu鍵,BACK鍵,搜索功能鍵盤,聲音鍵等,并且通過Toast的顯示方式實(shí)現(xiàn)了自己的功能,而沒有調(diào)用原先該功能鍵盤的實(shí)際功能。其中請注意的是,上面代碼中對(duì)KeyEvent.KEYCODE_VOLUME_DOWN的捕捉事件中,返回的值不是true,而是false,則表明由系統(tǒng)直接處理該功能事件,當(dāng)用戶按下聲音鍵時(shí),實(shí)際上已經(jīng)是通過系統(tǒng)調(diào)用而減少了音量大小。

步驟3重寫onKeyUp方法

同樣道理,我們重寫onKeyUp方法,代碼如下:

 
 
 
 
  1. @Override 
  2. public boolean onKeyUp(int keyCode, KeyEvent event) { 
  3. switch(keyCode){ 
  4. case KeyEvent.KEYCODE_MENU: 
  5. Toast.makeText(this, "Menu key released", Toast.LENGTH_SHORT).show(); 
  6. return true; 
  7. case KeyEvent.KEYCODE_SEARCH: 
  8. Toast.makeText(this, "Search key released", Toast.LENGTH_SHORT).show(); 
  9. return true; 
  10. case KeyEvent.KEYCODE_VOLUME_UP: 
  11. if(event.isTracking() && !event.isCanceled()) 
  12. Toast.makeText(this, "Volumen Up released", Toast.LENGTH_SHORT).show(); 
  13. return true; 
  14. case KeyEvent.KEYCODE_VOLUME_DOWN: 
  15. Toast.makeText(this, "Volumen Down released", Toast.LENGTH_SHORT).show(); 
  16. return true; 
  17. return super.onKeyUp(keyCode, event); 

在上面的代碼中,基本跟之前的onKeyDown()方法中介紹的功能一樣,分別對(duì)Menu菜單,Search檢索功能,減少音量三個(gè)鍵重新覆寫了方法,用Toast的方式顯示信息。而在Volumeup音量增加的按鍵事件捕捉中,如果用戶一段時(shí)間沒按下去的話,則會(huì)提示出錯(cuò)信息。

步驟4重寫onKeyLongPress方法

重寫onKeyLongPress方法的代碼如下:

 
 
 
 
  1. @Override 
  2. public boolean onKeyLongPress(int keyCode, KeyEvent event) { 
  3. Toast.makeText(this, "Pressed for a long time =) ", Toast.LENGTH_SHORT).show(); 
  4. return true; 

onKeyLongPress方法是在當(dāng)在onKeyDown()方法中,對(duì)某一個(gè)功能鍵調(diào)用了event.startTracking()方法跟蹤,并且按下這個(gè)功能鍵有一陣時(shí)間后才觸發(fā)。所以上面的代碼我們是在按下音量的增加功能鍵一陣時(shí)間后,會(huì)顯示提示信息。event.startTracking()方法之能在同一時(shí)間監(jiān)視一個(gè)按鍵,如果同一時(shí)間另外一個(gè)按鍵也按下,則該事件會(huì)取消對(duì)前一個(gè)按鍵的跟蹤。

步驟5重寫onBackPressed()方法

代碼如下:

 
 
 
 
  1. @Override 
  2. public void onBackPressed() { 
  3. Toast.makeText(this, "Back key pressed =)", Toast.LENGTH_SHORT).show(); 
  4. super.onBackPressed(); 

依然要提醒讀者注意的是,***不要重寫該方法,因?yàn)闀?huì)給用戶的操作體驗(yàn)帶來困擾。

步驟6重寫onTouchEvent()方法

代碼如下:

 
 
 
 
  1. @Override 
  2. public boolean onTouchEvent(MotionEvent event) { 
  3. float x = event.getX(); 
  4. float y = event.getY(); 
  5. Toast.makeText(this, "Touch press on x: " + x + " y: "+y, Toast.LENGTH_SHORT).show(); 
  6. return true; 

在上面的代碼中,在onTouchEvent方法中,當(dāng)用戶觸摸屏幕時(shí),會(huì)獲得觸摸點(diǎn)所在的X坐標(biāo)和Y坐標(biāo),并顯示出來。

小結(jié)

本文中,簡單介紹了在Android中如何對(duì)常見的功能按鍵進(jìn)行覆寫的方法以及其中的注意點(diǎn)。讀者可以在應(yīng)用中,根據(jù)實(shí)際情況需要進(jìn)行定制,以設(shè)計(jì)出更好的用戶體驗(yàn)的應(yīng)用。

原文地址:http://mobile.tutsplus.com/tutorials/android/android-sdk-intercepting-physical-key-events/

【譯稿,非經(jīng)授權(quán)謝絕轉(zhuǎn)載,合作媒體轉(zhuǎn)載請注明原文出處、作者及譯者!】


網(wǎng)頁名稱:Android交互體驗(yàn)必知:功能按鍵事件
瀏覽路徑:http://www.dlmjj.cn/article/djieshs.html