Android:似乎无法正确使用MotionEvent.ACTION_MOVE
我对Android编程和Java相当陌生(尽管我对C#有一些经验,所以这很有帮助)。Android:似乎无法正确使用MotionEvent.ACTION_MOVE
在这一刻,我正在玩弄一些事情,去了解一切是如何工作的。我做了一个实现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;
}
凡“圆”是绘制一个圆形的一类。
当我将手指放在屏幕上时,我期望看到的是一圈圆圈。相反,当我开始触摸时,这个圆圈才会被绘制出来。
我将我的代码与示例进行了比较(例如:Google的此博客:http://android-developers.blogspot.com/2010/06/making-sense-of-multitouch.html),我找不到我的错误。
编辑: 链接到满级: http://pastebin.com/tVDQjQhu
编辑: 固定。必须在onTouch()函数中返回true。 D'哦!
我在使用MotionEvent.ACTION_MOVE
时遇到同样的问题。 要使MotionEvent.ACTION_MOVE
正常工作,请返回true而不是false。
有同样的问题也一样,我不知道这是否是一个错误或没有,但我设法使它加入OnClickListener
的实施,贯彻public void onClick(View v)
然后又在构造添加setOnClickListener(this)
工作。
对于我的解决办法是
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返回false(视图V,MotionEvent事件),那么只有MotionEvent.ACTION_DOWN将被调用。所以你应该从这个功能返回true
希望这是帮助
+1你知道为什么这是它的工作原理吗?你能否指出我们的方向,这是有记录的地方,哪里会有解释?谢谢! – Mzn 2012-03-26 18:35:34
当您覆盖onTouchEvent时,您的返回布尔值指示该事件是否已消耗。 – stealthcopter 2012-09-13 13:47:43