我正在为学校项目编写Android应用程序,该应用程序根据用户点击屏幕的手指数执行不同的操作。
现在,此操作仅用于显示检测为吐司的指针数。
我使用getPointerCount()方法,但出于某种原因,我得到了多个祝酒词。例如,一个三指水龙头给我两个和三个手指点击的敬酒,一个四指点击将给我两个,三个和四个手指点击的祝酒,依此类推。
我不能为我的生活找出原因。一个四指点击应显示一个吐司说" 4",不循环通过2,3和4!任何帮助将不胜感激。
public boolean onTouchEvent(MotionEvent event)
{
int action = event.getAction();
switch(action & MotionEvent.ACTION_MASK)
{
case MotionEvent.ACTION_POINTER_DOWN:
int count = event.getPointerCount();
if (count == 2) {
finish();
}
else if (count == 4) {
Toast.makeText(this, String.valueOf(count), Toast.LENGTH_SHORT).show();
}
else if (count == 3) {
Toast.makeText(this, String.valueOf(count), Toast.LENGTH_SHORT).show();
}
break;
}
return true;
}
P.S,我已经尝试将代码移到switch语句之外,奇怪的是,这会导致toasts向上和向下计数!
答案 0 :(得分:0)
您将点击视为离散事件,但Android MotionEvents是作为流传递的。为了获得带有三根手指的ACTION_POINTER_DOWN,需要先用两根手指向下移动一个动作指针。 (如果你考虑一下,所有三个手指都不会在同一时间下降,即使这可能你不会那样接收它们。)
如果您使用
记录每个动作事件Log.i("test", event.toString());
您应该能够看到正在接收的事件序列,并更好地了解如何处理它们。