Android 如何監聽物理鍵Back,彈出一個Toast提示框或對話框

一、監聽back鍵,退出時彈出一個對話框,在Activity中重寫 onKeyDown方法,代碼如下:

@Override
public boolean onKeyDown (int keyCode, KeyEvent event) {
		if (keyCode == KeyEvent.KEYCODE_BACK) {
			// 創建退出對話框
			AlertDialog alertDialog = new AlertDialog.Builder(this).create();
			// 設置對話框標題
			alertDialog.setTitle("系統提示:");
			// 設置對話框消息
			alertDialog.setMessage("親你確定要退出該應用嗎?");
			// 添加選擇按鈕並註冊監聽
			alertDialog.setButton("確定", listener);
			alertDialog.setButton2("取消", listener);
			// 顯示對話框
			alertDialog.show();

		}
		return false;
	}

	/** 監聽對話框裏面的button點擊事件 */
	DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
		public void onClick(DialogInterface dialog, int which) {
			switch (which) {
			// "確認"按鈕退出程序
			case AlertDialog.BUTTON_POSITIVE:
				finish();
				break;
			// "取消"第二個按鈕取消對話框
			case AlertDialog.BUTTON_NEGATIVE:
				break;
			default:
				break;
			}
		}
	};

二、監聽back鍵,當慢點擊back鍵時彈出一個Toast提示框,連續兩次快點擊back鍵時直接退出該應用,兩種實現方式如下:

##2.1 重寫onBackPressed() 方法:

	@Override
    public void onBackPressed() {
        if (System.currentTimeMillis() - mPreBackTime < DOUBLE_CLICK_TIME_SUB) {
            finish();
        } else {
            Toast.makeText(MainActivity.this, "再按一次返回鍵退出手機淘寶", Toast.LENGTH_SHORT).show();
            mPreBackTime = System.currentTimeMillis();
        }
    }

##2.2 重寫onKeyDown( ) 方法:

//連續兩次按back鍵的指定時長差值
private static final int DOUBLE_CLICK_TIME_SUB = 1000;
//前一次按back鍵的時間
private long mPreBackTime = 0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
            if (System.currentTimeMillis() - mPreBackTime < DOUBLE_CLICK_TIME_SUB) {
                super.onKeyDown(keyCode, event);
            } else {
                Toast.makeText(MainActivity.this, "再按一次返回鍵退出手機淘寶", Toast.LENGTH_SHORT).show();
                mPreBackTime = System.currentTimeMillis();
            }
            return true;
        }
        return super.onKeyDown(keyCode, event);
發佈了53 篇原創文章 · 獲贊 93 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章