在RelativeLayout上检测多点触摸
问题描述:
只有当用户在3秒内用三根手指触摸屏幕时,我想在我的活动中运行一个方法。 我的活动只有一个RelativeLayout。在RelativeLayout上检测多点触摸
我正在使用AtomicBoolean和一个线程,但是我无法让我的代码在3个手指触摸屏幕时“知道”。
这里是我的代码部分:
方法MotionEvent
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;
}
答
getPointerCount()
会给你手指触摸屏幕的数量。如果您的设备支持多点触控,则可能会返回1或更多,否则返回1.
但是,您将它存储在wantedTime
变量中,然后用100减去它,这没有意义。
我想,你需要做的是
- 在
ACTION_DOWN
,等到指针等于3店当前时间的地方,例如threeTouchStartTime
的数量,当它。 -
ACTION_MOVE
,获取当前时间,并用threeTouchStartTime
减去它。测试指针数量是否仍然是3并且经过时间超过3秒。当它发生时,然后做你想做的事情。
你可能想看看GestureDetector
类。