編輯:關於Android編程
在安卓開發中,我們經常要對按鍵進行監聽,今天跟大家分享一下最常用的按下返回退出功能的實現.
如果沒有對返回鍵設置監聽,通常按下一次返回鍵就會退出程序或退出某個界面,這樣是很不人性化的,我們可以有兩種處理方式:
下面分別介紹著兩種實現方式
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一直沒搞太懂,有沒有大神能告知呢?
Android Camera 實時濾鏡(八)
一、Android Camera可以做哪些?1、功能拍攝相片 視頻錄制 取景器(掃描類應用,如人臉識別,名片識別,條形碼識別)2、根據Camera API實現自己的拍照程
Android 最火的快速開發框架XUtils之注解機制詳解
在上一篇文章Android 最火的快速開發框架XUtils中簡單介紹了xUtils的基本使用方法,這篇文章說一下xUtils裡面的注解原理。 先來看一下xU
Android實現ListView過濾功能之繼承BaseAdapter進階版
實現ListView過濾功能最方便的便是使用ArrayAdapter,裡面自帶的getFilter()方法能很方便的實現此功能但是在實際的開發中,ArrayAdapte
Android開發之獲取所有軟件信息
程序運行效果圖: 程序代碼: /** * 獲取所有軟件信息 * 1.通過異步的方式顯示系統中所有軟件 * 2.單擊打開指定軟件 * 3.將所有軟件的包名