0

以下代码是测试应用程序中使用的实际代码,位于扩展 surfaceView 的类上。

@Override
public void onDraw(Canvas canvas)
{       
    canvas.drawCircle(touched_x, touched_y, 50, myPaint);
}

@Override
public boolean onTouchEvent(MotionEvent event)
{
    touched_x = event.getX();
    touched_y = event.getY();  
    return true;    
}

它基本上画出你的手指去哪里。测试它是否跟踪。

添加第二根手指,您仍然可以跟踪您的第一根手指。但是添加第三个,它就停止了。你从那里做什么都没关系。除非您移开所有手指并重新开始,否则它不会跟踪。

现在这是一个问题,因为它有时认为一根手指就是三根!我可以克服手指之间的测试距离,但这仍然不能解决问题。

当第三根手指敲击时,它会冻结跟踪。它不会调用 action.Cancel。

我知道第一根手指在何时何地被释放是至关重要的。

然而它认为最后一个事件是MotionEvent.ACTION_MOVE。不是MotionEvent.ACTION_UPMotionEvent.ACTION_CANCEL

目前因为一根手指可以是三个。我的应用似乎无法加载给定的图像滚动。

4

1 回答 1

0

发布更多您的代码。我没有遇到任何问题。也许您在某些情况下忘记使视图无效或有错误?有我的完整代码,它可以工作:

float x1 = -100, y1;

@Override
protected void onDraw(Canvas canvas) {
    Paint paint = new Paint();
    paint.setAntiAlias(true);
    canvas.drawColor(Color.WHITE);

    paint.setColor(Color.RED);
    canvas.drawCircle(x1, y1, 30, paint);
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    x1 = event.getX();
    y1 = event.getY();

    invalidate();
    return true;
}

也许您的设备上有错误,但这不太可能..

于 2012-05-29T10:01:22.263 回答