日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 菜单 功能键,Android交互体验必知:功能按键事件

發布時間:2025/3/12 Android 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 菜单 功能键,Android交互体验必知:功能按键事件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

開始學習

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

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

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

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

調節音量大小

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

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

onKeyDown()

onKeyUp()

onKeyLongPress()

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

onTrackballEvent()

onTouchEvent()

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

關于特殊的鍵

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

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

步驟1建立Android工程

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

步驟2重寫onKeyDown()方法

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

@Override

publicbooleanonKeyDown(intkeyCode,?KeyEvent?event)?{

switch(keyCode){

caseKeyEvent.KEYCODE_MENU:

Toast.makeText(this,"Menu?key?pressed",?Toast.LENGTH_SHORT).show();

returntrue;

caseKeyEvent.KEYCODE_SEARCH:

Toast.makeText(this,"Search?key?pressed",?Toast.LENGTH_SHORT).show();

returntrue;

caseKeyEvent.KEYCODE_BACK:

onBackPressed();

returntrue;

caseKeyEvent.KEYCODE_VOLUME_UP:

event.startTracking();

returntrue;

caseKeyEvent.KEYCODE_VOLUME_DOWN:

Toast.makeText(this,"Volumen?Down?pressed",?Toast.LENGTH_SHORT).show();

returnfalse;

}

returnsuper.onKeyDown(keyCode,?event);

}

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

步驟3重寫onKeyUp方法

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

@Override

publicbooleanonKeyUp(intkeyCode,?KeyEvent?event)?{

switch(keyCode){

caseKeyEvent.KEYCODE_MENU:

Toast.makeText(this,"Menu?key?released",?Toast.LENGTH_SHORT).show();

returntrue;

caseKeyEvent.KEYCODE_SEARCH:

Toast.makeText(this,"Search?key?released",?Toast.LENGTH_SHORT).show();

returntrue;

caseKeyEvent.KEYCODE_VOLUME_UP:

if(event.isTracking()?&&?!event.isCanceled())

Toast.makeText(this,"Volumen?Up?released",?Toast.LENGTH_SHORT).show();

returntrue;

caseKeyEvent.KEYCODE_VOLUME_DOWN:

Toast.makeText(this,"Volumen?Down?released",?Toast.LENGTH_SHORT).show();

returntrue;

}

returnsuper.onKeyUp(keyCode,?event);

}

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

步驟4重寫onKeyLongPress方法

重寫onKeyLongPress方法的代碼如下:

@Override

publicbooleanonKeyLongPress(intkeyCode,?KeyEvent?event)?{

Toast.makeText(this,"Pressed?for?a?long?time?=)?",?Toast.LENGTH_SHORT).show();

returntrue;

}

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

步驟5重寫onBackPressed()方法

代碼如下:

@Override

publicvoidonBackPressed()?{

Toast.makeText(this,"Back?key?pressed?=)",?Toast.LENGTH_SHORT).show();

super.onBackPressed();

}

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

步驟6重寫onTouchEvent()方法

代碼如下:

@Override

publicbooleanonTouchEvent(MotionEvent?event)?{

floatx?=?event.getX();

floaty?=?event.getY();

Toast.makeText(this,"Touch?press?on?x:?"+?x?+"?y:?"+y,?Toast.LENGTH_SHORT).show();

returntrue;

}

在上面的代碼中,在onTouchEvent方法中,當用戶觸摸屏幕時,會獲得觸摸點所在的X坐標和Y坐標,并顯示出來。

小結

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

總結

以上是生活随笔為你收集整理的android 菜单 功能键,Android交互体验必知:功能按键事件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。