我想在我的Activity中运行一个方法,只有当用户在3秒内用三根手指触摸屏幕时。 我的活动只有一个RelativeLayout。
我正在使用AtomicBoolean和一个Thread,但当3个手指触摸屏幕时,我无法让我的代码“知道”。
以下是我的代码的一部分:
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
wantedTime = event.getPointerCount();
T = new Thread() {
public void run() {
while (canThreadRun.get()) {
wantedTime - = 100;
UpdateText(timerText, wantedTime);
try {
Thread.sleep(100L);
} catch (InterruptedException e) {
return;
}
}
}
};
canThreadRun.set(true);
T.start();
break;
case MotionEvent.ACTION_UP:
canThreadRun.set(false);
break;
case MotionEvent.ACTION_MOVE:
break;
}
return false;
}
答案 0 :(得分:0)
getPointerCount()
的{{1}}方法会为您提供手指触摸屏的数量。如果您的设备支持多点触控,则可能会返回1或更多,否则返回1.
但是你将它存储在MotionEvent
变量中然后用100减去它,这是没有意义的。
我认为,你需要做的是
wantedTime
上,等到指针数等于3.将当前时间存储在某处,例如ACTION_DOWN
,等等。threeTouchStartTime
上,获取当前时间并用ACTION_MOVE
减去它。测试指针数是否仍为3,经过时间超过3秒。如果是,那就去做你想做的事。您可能需要查看threeTouchStartTime
课程。