android两种判断双击的方法

第一种、

private static boolean mBackKeyPressed = false;          //记录是否有首次按键

@Override

public void onBackPressed() {

if(!mBackKeyPressed){                                 //如果mBackKeyPressed不等于false(那就是true咯)

Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();          //提示再按一次退出

mBackKeyPressed = true;                            //把mBackKeyPressed设置为true

new Timer().schedule(new TimerTask() {             //延时两秒,如果超出则擦错第一次按键记录

@Override

public void run() {

mBackKeyPressed = false;                    //时间超过2秒,把mBackKeyPressed设回false

}

}, 2000);                                          //2000单位是毫秒等于2秒

}else{                                                //否则退出程序

this.finish();

System.exit(0);

}

}

//整个代码思路就是:用一个mBackKeyPressed的布尔值判断是否在两秒内按下两次返回键,第一次按下时提示再按一次退出,如果Timer倒计时2秒结束后,就把第一次按的记录去除,也就是把mBackKeyPressed设会false,如果在Timer倒计时没结束时,也就是mBackKeyPressed的值还是ture时,那么if中的!mBackKeyPressed的值为false,就执行else语句,就是退出程序。if(!mBackKeyPressed)/*直观就是if(!false)*/!false等于true,就执行if语句中的代码,当Timer中的run方法还没执行时,也就是没倒计时完毕时,mBackKeyPressed是等于true,这是如果再次按下返回键,if(!mBackKeyPressed)/*直观就是if(!true)*/!true等于false,那就是执行else里面的语句了。

true == true;

!true == false;

false == false;

!false == true;

第二种、

private long mPressedTime = 0;          //保存上一次按下返回键的时间

@Override

public void onBackPressed() {

long mNowTime = System.currentTimeMillis();          //获取第一次按键时间单位为毫秒,把值赋给mNowTime

if((mNowTime - mPressedTime) > 2000){               //比较两次按键时间差,如果减去上一次按的时间小于2000毫秒就执行if里面的代码

Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show();          //提示再按一次退出

mPressedTime = mNowTime;                    //把这一次获取的时间赋给mPressedTime,mPressedTime用来保存上一次按下返回键的时间

}

else{                              //退出程序

this.finish();

System.exit(0);

}

}

//整个代码的思路分析:用mPressedTime记录上一次的时间(毫秒),mNowTime记录当前按下返回键的时间(毫秒),if语句意思是如果这一次获取到的时间(毫秒)减去上一次获取到的时间(毫秒)的值大于2000,比如4000-3000=1000,值不大于2000,也就是两次按下的时间不相差2秒,则if条件不成立将执行else中的代码,即退出程序,比如5000-2000=3000,相差时间超过2秒,超过双击退出的一般时间,则重新提示再按一次退出!最简单说就是,如果是第一次点击,这次获取到的时间减去上一次的时间肯定比上一次相差大于2000,就提示再点击退出,如果是第二次点击比上一次点击大于2000还是提示再点就退出,如果第二次和上一次点击的时间相差不到2000,那么就if条件不成立,则是执行else中的代码!

你可能感兴趣的:(android两种判断双击的方法)