Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android常用之返回按鍵監聽

Android常用之返回按鍵監聽

編輯:關於Android編程

在安卓開發中,我們經常要對按鍵進行監聽,今天跟大家分享一下最常用的按下返回退出功能的實現.
如果沒有對返回鍵設置監聽,通常按下一次返回鍵就會退出程序或退出某個界面,這樣是很不人性化的,我們可以有兩種處理方式:

按下返回鍵時彈出一個對話框(AlertDialog),再讓用戶選擇是否退出 雙擊返回退出

下面分別介紹著兩種實現方式

1. 按下返回鍵時彈出一個對話框(AlertDialog),再讓用戶選擇是否退出

實現思路:

重寫onKeyDown方法 在方法中,判斷返回按鍵被按下的時候創建一個對話框並顯示 給對話框的按鈕設置點擊監聽

代碼示例:

//重寫onKeyDown方法,對按鍵(不一定是返回按鍵)監聽
public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {//當返回按鍵被按下
            AlertDialog.Builder dialog = new AlertDialog.Builder(context);//新建一個對話框
            dialog.setMessage("確定要退出測試嗎?");//設置提示信息
            //設置確定按鈕並監聽
            dialog.setPositiveButton("確定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    finish();//結束當前Activity
                }
            });
            //設置取消按鈕並監聽
            dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                //這裡什麼也不用做
                }
            });
            dialog.show();//最後不要忘記把對話框顯示出來
        }
        return false;
    }

這樣,就實現了點擊返回按鍵時彈出對話框,並交由用戶處理退出的功能

2.雙擊返回退出

實現思路:

重寫onKeyDown方法 聲明一個全局的布爾值isExit,默認為false 第一次點擊返回按鍵時,彈出Toast提示,並調用exit()方法 exit()方法中,判斷isExit值,並執行相應邏輯(具體看代碼吧,原諒我真不知道怎麼描述了……)

代碼示例:

//聲明一個全局布爾值,默認為false
public boolean isExit = false;

//重寫onKeyDown方法,
public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {//當返回按鍵被按下
        //調用exit()方法
        exit();
        }
        return false;
    }

//被調用的exit()方法
private void exit() {
        Timer timer;//聲明一個定時器
        if (!isexit) {  //如果isExit為false,執行下面代碼
            isexit = true;  //改變值為true
            Toast.makeText(TestActivity.this, "再按一次退出測試", Toast.LENGTH_SHORT).show();  //彈出提示
            timer = new Timer();  //得到定時器對象
            //執行定時任務,兩秒內如果沒有再次按下,把isExit值恢復為false,再次按下返回鍵時依然會進入if這段代碼
            timer.schedule(new TimerTask() {  
                @Override
                public void run() {
                    isexit = false;
                }
            }, 2000);
        } else {//如果兩秒內再次按下了返回鍵,這時isExit的值已經在第一次按下時賦值為true了,因此不會進入if後的代碼,直接執行下面的代碼
            finish();
        }
    }

嗯,就這樣,雙擊退出的功能也實現了,如果看不懂,建議大家自己寫一遍就能明白邏輯了.

最後:我也是新手<( ̄3 ̄)> …不知道怎麼表達更清楚,求大神輕輕的嘲諷,關愛菜鳥,人人有責!
還有,onKeyDown()的return一直沒搞太懂,有沒有大神能告知呢?

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved