日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
Android交互體驗必知:功能按鍵事件

[[70003]]

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

【獨家譯文】本文為翻譯自外文網站tutsplus.com的《Android交互體驗必知:功能按鍵事件》。以下為全部譯文:

開始學習

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

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

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

KeyEvent類有多個定義好的key常量,表示一個標準的Android設備中的功能按鍵,列表入下:

功能按鍵

常量定義

描述

Power

KEYCODE_POWER

打開設備或者將設備喚醒

Back

KEYCODE_BACK

回到上一屏(頁)

Home

KEYCODE_HOME

返回主菜單(屏幕)

SEARCH

KEYCODE_SEARCH

打開一個搜索

CAMERA

KEYCODE_CAMERA

打開攝像頭功能

VOLUME

KEYCODE_VOLUME_UP

KEYCODE_VOLUME_DOWN

調節(jié)音量大小

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

對于功能按鍵的調用,常用的回調方法有入下幾個:

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

而對于設備中的軌跡球或者觸摸屏幕,常用的回調方法有入下幾個:

 
 
 
 
  1. onTrackballEvent() 
  2. onTouchEvent() 

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

關于特殊的鍵

然而,有些特殊的鍵是開發(fā)者沒有辦法去重新定制的,因為它們直接由系統(tǒng)去調用,比如象power和home鍵,BACK回退鍵也是特殊鍵之一,盡管如果開發(fā)者要重新定制其行為的話,可以重新覆寫onBackPressed()方法,但在一般情況下,強烈不建議開發(fā)者這樣去做,因為回退鍵本身功能是回到上一屏的,重新定制的話會給用戶帶來很多困擾。

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

步驟1建立Android工程

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

步驟2重寫onKeyDown()方法

首先學習重寫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方法中,分別根據keycode去判斷觸發(fā)的是哪個功能鍵,例如菜單menu鍵,BACK鍵,搜索功能鍵盤,聲音鍵等,并且通過Toast的顯示方式實現了自己的功能,而沒有調用原先該功能鍵盤的實際功能。其中請注意的是,上面代碼中對KeyEvent.KEYCODE_VOLUME_DOWN的捕捉事件中,返回的值不是true,而是false,則表明由系統(tǒng)直接處理該功能事件,當用戶按下聲音鍵時,實際上已經是通過系統(tǒng)調用而減少了音量大小。

步驟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()方法中介紹的功能一樣,分別對Menu菜單,Search檢索功能,減少音量三個鍵重新覆寫了方法,用Toast的方式顯示信息。而在Volumeup音量增加的按鍵事件捕捉中,如果用戶一段時間沒按下去的話,則會提示出錯信息。

步驟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方法是在當在onKeyDown()方法中,對某一個功能鍵調用了event.startTracking()方法跟蹤,并且按下這個功能鍵有一陣時間后才觸發(fā)。所以上面的代碼我們是在按下音量的增加功能鍵一陣時間后,會顯示提示信息。event.startTracking()方法之能在同一時間監(jiān)視一個按鍵,如果同一時間另外一個按鍵也按下,則該事件會取消對前一個按鍵的跟蹤。

步驟5重寫onBackPressed()方法

代碼如下:

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

依然要提醒讀者注意的是,***不要重寫該方法,因為會給用戶的操作體驗帶來困擾。

步驟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方法中,當用戶觸摸屏幕時,會獲得觸摸點所在的X坐標和Y坐標,并顯示出來。

小結

本文中,簡單介紹了在Android中如何對常見的功能按鍵進行覆寫的方法以及其中的注意點。讀者可以在應用中,根據實際情況需要進行定制,以設計出更好的用戶體驗的應用。

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

【譯稿,非經授權謝絕轉載,合作媒體轉載請注明原文出處、作者及譯者!】


網站標題:Android交互體驗必知:功能按鍵事件
本文URL:http://www.5511xx.com/article/djieshs.html