gpt4 book ai didi

java - 在RelativeLayout上检测多点触摸

转载 作者:行者123 更新时间:2023-12-02 12:16:39 25 4
gpt4 key购买 nike

我想在我的 Activity 中运行一个方法,只有当用户在 3 秒内使用三个手指触摸屏幕时。我的 Activity 只有一个relativelayout。

我正在使用 AtomicBoolean 和一个线程,但我无法让我的代码“知道”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;
}

最佳答案

MotionEvent

getPointerCount() 方法将为您提供手指触摸屏幕的数量。如果您的设备支持多点触控,它可能会返回 1 或更多,否则返回 1。

但是你将它存储在 wantedTime 变量中,然后用 100 减去它,这是没有意义的。

我认为,你需要做的是

  • ACTION_DOWN上,等待指针数量等于3。当它达到时,将当前时间存储在某个地方,例如 ThreeTouchStartTime
  • ACTION_MOVE上,获取当前时间并用thirdTouchStartTime减去它。测试指针数量是否仍为3且运行时间是否超过3秒。当它发生时,然后做你想做的事情。

您可能想查看GestureDetector 类。

关于java - 在RelativeLayout上检测多点触摸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46125233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com