发布于 

利用Snackbar实现双重退出提示信息

更优雅的实现退出提示信息

定义参数
1
2
3
private Timer tExit;
private static Boolean isExit = false;
private static final String TAG_EXIT = "exit";
定义提示信息方法
1
2
3
4
5
6
7
8
9
private void showSnackBar(View view, String text) {
if (snackbar == null) {
snackbar = Snackbar.make(view, text, Snackbar.LENGTH_SHORT);
} else {
snackbar.setText(text);
snackbar.setDuration(Snackbar.LENGTH_SHORT);
}
snackbar.show();
}
复写onKeyDown方法
1
使用快捷键ctrl+o  快速找到其方法并生成对应方法以及内容

于方法内写入以下事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if (keyCode == KeyEvent.KEYCODE_BACK) {
tExit = null;
if (!isExit) {
isExit = true; // 准备退出
showSnackBar(titleBar, getString(R.string.click_exit));
tExit = new Timer();
tExit.schedule(new TimerTask() {
@Override
public void run() {
isExit = false; // 取消退出
}
}, 2000);
} else {
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra(MainActivity.TAG_EXIT, true);
startActivity(intent);
}

return true;
}
注意细节
  • 启动模式
    • 在Androidmanifest清单文件中为所需activity设置android:launchMode=”singleTask”
  • titleBar参数
    • 其实只是我一个自定义标题栏参数