首先,我是android的新手,所以请先考虑任何新手错误

我试图在代码中添加一个fling函数。

public class MainGamePanel extends SurfaceView implements
    SurfaceHolder.Callback, OnGestureListener {

private MainThread thread;
private Droid droid;
private Droid droid2;
private static final String TAG = gameView.class.getSimpleName();
private GestureDetector gestureScanner;

public MainGamePanel(Context context){
        super(context);
        getHolder().addCallback(this);
        droid = new Droid(BitmapFactory.decodeResource(getResources(), R.drawable.playerbox2), 270, 300);
        droid2 = new Droid(BitmapFactory.decodeResource(getResources(), R.drawable.playerbox2), 50, 300);
        thread = new MainThread(getHolder(), this);
        setFocusable(true);
        gestureScanner = new GestureDetector(this);
}


    public boolean onTouchEvent(MotionEvent event){
    return gestureScanner.onTouchEvent(event);
}


@Override
protected void onDraw(Canvas canvas){
    canvas.drawColor(Color.BLACK);
    droid.draw(canvas);
    droid2.draw(canvas);
}

@Override
  public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float                         velocityY)
    {
         droid.setX(50);
        droid.setY(50);
        Log.d(TAG, "Coords: x=" + e1.getX() + ",y=" + e2.getY());
        return true;
    }

@Override
public boolean onDown(MotionEvent e) {
    droid2.setX((int)e.getX());
    droid2.setY((int)e.getY());


    Log.d(TAG, "Coords: x=" + e.getX() + ",y=" + e.getY());
    return false;
}

我使用了motion监听器:onDown,onLongPress和onShowPress。

但是我无法通过onFling,onSingleTapUp和onScroll得到任何响应。

我犯什么错误?与 View 有关吗?

我不知道看什么代码会很有用...。因此,任何建议都将不胜感激。
谢谢你!

最佳答案

onDown事件之前调用onFling
如果在onDown方法中返回false,则运动事件传播将停止。

尝试在return false方法的末尾更改return true中的onDown

返回值在开发指南的Input Events页中有些晦涩难懂。 (向下滚动到示例代码下方即可查看)。

10-08 03:01