Android再按一次返回退出程序——返回鍵、菜單鍵事件的改寫

玩過遊戲的小夥伴都知道,幾乎現在所有的遊戲在你要退出的時候會有一個彈窗提醒,如下圖這樣的:
在這裏插入圖片描述

那麼這是怎麼實現的呢?咱們來一探究竟!

先上一波我的效果圖
在這裏插入圖片描述

其實最主要的是理解這個功能實現的思路,像遊戲退出確認功能,你需要改寫返回鍵的事件,把返回鍵原本的事件改成彈出一個Dialog,然後處理Dialog兩個按鈕的點擊事件,比如取消按鈕就直接把Dialog彈窗取消,確定就退出程序等等…

直接上代碼:

這裏是Ctrl+O,重寫一下Activity的事件,這裏重寫的是onKeyDown事件,然後利用 if 語句對返回鍵事件以及菜單鍵事件進行重寫,最後一定要注意return true;防止執行了你重寫的事件以後再去執行系統默認的返回事件!(我這裏只是寫了一個簡單的setText()事件做示範)

此時小夥伴們肯定會想到改寫HOME鍵的事件,Android4.0以後,爲了用戶的安全,谷歌對於HOME事件的改寫已經做了一個安全處理,然後需要改寫的話比較麻煩,需要用到廣播,後續會單獨寫一個HOME鍵事件的博客!

@Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        //Android4.0 開始 爲了安全,對於HOME事件的改寫失效
        if (keyCode==KeyEvent.KEYCODE_BACK){
            /** 這個是再按一次返回的代碼示例
            if ((System.currentTimeMillis() - mExitTime) > 2000) {
                Toast.makeText(this, "再按一次返回主頁", Toast.LENGTH_SHORT).show();
                mExitTime = System.currentTimeMillis();
            } else {
                finish();
            }*/
            mTxvKeycode.setText("按了返回");
            //對事件進行終止,防止再調用正常的Back事件
            return true;
        }else if (keyCode==KeyEvent.KEYCODE_MENU){
            mTxvKeycode.setText("按了菜單");
            return true;
        }else{
            return super.onKeyDown(keyCode, event);
        }
    }

感謝閱讀!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章