在软件退出时,为了友好的提示用户是否真的想退出程序,在PC机上我们往往是采用弹出messagebox的方法,虽然安卓中也有类似的控件,但是使用起来并没有那么的方便。现在大多数程序设计的提示方式往往就是“再按一次退出”这样会增加用户的体验感。
我们实现思路就是,在程序中定义一个变量来表示反应时间,即用户在什么时间范围内按下返回键才会退出。需要定义一个记录上次按下返回键时间的变量,这样通过在OnKeyDown(),这个函数中来进行判断就可以实现我们的功能。具体代码如下:
package com.example.backtest;
import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
public class MainActivity extends Activity {
private static long currenttime=0;//获取当前时间
private long touchtime=2000;//反映时间
private long lasttime=0;//上次按键时间
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode==KeyEvent.KEYCODE_BACK)
{
currenttime=System.currentTimeMillis();//获取当前时间
if(currenttime-lasttime>=touchtime)
{
Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show();
lasttime=currenttime;//将当前时间记录为上次按键时间
}
else {
finish();//如果小于时间间隔说明连续按键,希望退出
}
}
// return super.onKeyDown(keyCode, event);
return true;//需要返回当前的按键信息,如返回super,将直接退出不会有按两次退出效果
}
}