Dota老菜鸟手速点出多个界面问题,你肯定遇到过!!!
手速快,技能接的好,各种秀操作,但是点app的按钮呢?有两个微信页面,两个网易新闻页面,两个微博页面。。。我都遇到过!
-当我们手速很快的点击一个按钮启动新的页面的时候,如果速度过快,就可能启动多个相同的页面。虽然这种时候只是偶然的,但是我抢不到小米5依然拿着上个世纪配置的坚果手机,大多时候卡的要一直点一个按钮,所以回退的时候总是会很烦的关闭相同页面,这体验一点都不好。记得最早的时候会想到以逸待劳的方法,设置lanchmode为singleTop,yes,世界清静了,清静了?NO!!!!,引出了另外一个问题,startActivityForResult,你不能再合适的时机接收到返回值。。。既然是连续点击,就老老实实从点击事件做起吧。。。
-父类activity,(别说你没这个,那我只会鄙视你),重写一下dispatchTouchEvent方法,把连续点击的时间拦截下来。让他不能传到onclick哪里。
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
if (Util.isFastDoubleClick()) {
return true;
}
}
return super.dispatchTouchEvent(ev);
}
- 方法名可以看出意思,如果快速点击两次,返回true,这里返回true,就是吃了这个汉堡,不让别人吃。。。
点击事件就是一个汉堡,return就是问你吃不吃,return true,就是吃,你吃了就没有了,就不问下一个了,return false,就是不吃,问下一个,这样是不是好记许多。。。
public static boolean isFastDoubleClick() {
long time = System.currentTimeMillis();
long timeD = time - lastClickTime;
if (timeD >= 0 && timeD <= 1000) {
return true;
} else {
lastClickTime = time;
return false;
}
}
- 这个方法就是验证是不是连续点击的,你自己设置一个时间段,在这个时间段内为连续点击。
-别忘了你的activity要继承这个父类