作者:程式員小冰
微網誌:http://weibo.com/mcxiaobing
【Android】輕按兩下傳回鍵,退出android應用程式 輕按兩下兩次退出程式提示功能 三種實作方法
最下面有項目源代碼下載下傳位址。當然,還是希望大家掌握這個小功能。
package davidsystemapp.com.davidsystemapp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.Toast;
import java.util.Timer;
import java.util.TimerTask;
/**
* @author :程式員小冰
*
* @新浪微網誌 :http://weibo.com/mcxiaobing
*
*
*/
public class MainActivity extends AppCompatActivity {
private Toast toast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toast = Toast.makeText(getApplicationContext(), "再按一次退出程式", Toast.LENGTH_SHORT);
}
/**
* 輕按兩下兩次退出程式提示 第一種方式
*/
/* boolean isState = true;//設定輕按兩下退出的變量
public void onBackPressed() {
if (isState) { //isState初始值為true
isState = false;
Toast.makeText(this, "再按一次退出程式", Toast.LENGTH_SHORT).show();
new Timer().schedule(new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
isState = true;
}
}, 2000);
} else {
finish();
}
}*/
/**
* 輕按兩下兩次退出程式提示 第二種方式
*/
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
quitToast();
return true;
}
return super.onKeyDown(keyCode, event);
}
private void quitToast() {
if (null == toast.getView().getParent()) {
toast.show();
} else {
finish();
// System.exit(0);
}
}
/**
* 輕按兩下兩次退出程式提示 第三種方式
* <p/>
* https://github.com
*/
// 1.on..2.開發者實作 3.系統調用
// 條件 :點選實體鍵盤或者軟體盤
// int keyCode按鍵編号
/* long[] times = new long[2];
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
// ① 找出回調函數
// ② 點選時間 time1 time2
// ③ 時間 間隔 <2000 退出
// ④ 提示再點一次
times[0] = times[1];
times[1] = System.currentTimeMillis();
if (times[1] - times[0] < 2000) {
finish();
} else {
Toast.makeText(getBaseContext(), "再點一次退出", Toast.LENGTH_SHORT).show();
}
return true;// 消費事件
}
return super.onKeyDown(keyCode, event);
}*/
}