Android双击事件实现

2017-03-11  本文已影响0人  木白掘金

双击退出应用

long firstPressTime = 0;
/**
 * 双击返回键退出应用
 */
public void onBackPressed(){
    long now = System.currentTimeMillis();
    if ((now - firstPressTime) > 2000){
        Snackbar snackbar = Snackbar.make(getCurrentFocus(),"再按一次退出",Toast.LENGTH_SHORT);
                setSnackbarColor(snackbar,Color.BLUE,Color.WHITE);
                snackbar.show();
        firstPressTime = now;
    }else {
        finish();
        System.exit(0);
    }
}

双击响应事件

利用Handler控制点击事件

long firstPressTime = 0;
long mNow = 0;
final Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            switch (msg.what) {
                case 1:
                    Snackbar.make(getCurrentFocus(),"双击事件",Snackbar.LENGTH_SHORT).show();
                    break;
                case 2:
                    Snackbar.make(getCurrentFocus(),"单击事件",Snackbar.LENGTH_SHORT).show();
                    break;
            }
        }
    };

btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            firstPressTime=mNow;
            mNow= System.currentTimeMillis();
            if (mNow - firstPressTime < 300){//双击事件
               //先移除消息栈里面的单击消息
                handler.removeMessages(2);
                handler.sendEmptyMessage(1);
                mNow= 0;
            }else {//单击事件
                //发送0.31s的延时message,便于区分单双击事件
                handler.sendEmptyMessageDelayed(2,310);
            }
        }
    });
上一篇下一篇

猜你喜欢

热点阅读