Android:似乎无法正确使用MotionEvent.ACTION_MOVE

我对Android编程和Java相当陌生(尽pipe我对C#有一些经验,所以这很有帮助)。

在这个时候,我正在蠢蠢欲动,想知道一切是如何运作的。 我做了一个实现onTouchListener的活动。 我已经覆盖onTouch并在event.getAction()上有一个开关:

public boolean onTouch(View v, MotionEvent event) { float x; float y; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // gets called { x = event.getX(); y = event.getY(); circle c = new circle(this, x, y, 10, 0xFFFFFF); _main.addView(c, tapCount++); break; } case MotionEvent.ACTION_MOVE: // doesnt seem to do anything { x = event.getX(); y = event.getY(); circle c = new circle(this, x, y, 10, 0xFFFFFF); _main.addView(c, tapCount++); break; } } return false; } 

“圈子”是一个画圈的class级。

当我将手指拖到屏幕上时,我期望看到的是一圈圈子。 相反,当我开始触摸的时候,这个圆圈才被画出来。

我将我的代码与示例进行了比较(例如:Google的这个博客: http : //android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html ),我找不到我的错误。

编辑:链接到全class: http : //pastebin.com/tvdqjqhu

编辑:修正。 必须在onTouch()函数中返回true。 D'哦!

Solutions Collecting From Web of "Android:似乎无法正确使用MotionEvent.ACTION_MOVE"

我在使用MotionEvent.ACTION_MOVE时遇到同样的问题。 要使MotionEvent.ACTION_MOVE正常工作,请返回true而不是false。

对我来说解决scheme是

 return true 

在onTouch函数中,你应该使用这个

 public boolean onTouch(View v, MotionEvent event){ float x; float y; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // gets called { x = event.getX(); y = event.getY(); circle c = new circle(this, x, y, 10, 0xFFFFFF); _main.addView(c, tapCount++); break; } case MotionEvent.ACTION_MOVE: // doesnt seem to do anything { x = event.getX(); y = event.getY(); circle c = new circle(this, x, y, 10, 0xFFFFFF); _main.addView(c, tapCount++); break; } } return true; //the problem was here 

}

当您从onTouch(View v,MotionEvent事件)返回false时,则只会调用MotionEvent.ACTION_DOWN。 所以你应该从这个函数返回true

希望这是帮助

也有同样的问题,我不知道这是否是一个错误,但我设法通过添加OnClickListener到实现,并实现public void onClick(View v)然后还添加setOnClickListener(this)构造函数。