1

私はこれをしたい:

    • 画面をタッチすると、タッチしたx、y座標に新しい楕円を作成したい
    • 画面上で指をドラッグしているときに、ドラッグ中に指があったすべてのx、y座標に新しい楕円を作成します。
    • タッチして画面上で指を押したまま(長押し)すると、作成したすべての楕円を削除したい

最初のステップは実行できますが、2。と3の実行方法がわかりません。

これが私が試した私のコードです:

public class BouncingBallView extends View implements OnGestureListener{

private List<Oval> ovals = new ArrayList<Oval>();
private GestureDetector gestureScanner;

public BouncingBallView(Context context) {
    super(context);
    setBackgroundColor(Color.WHITE);
    gestureScanner = new GestureDetector(this);
}

@Override
protected void onDraw(Canvas canvas) {
    for(Oval o: ovals) { //prints every oval
        o.graph(canvas);
    } 
}

@Override
public boolean onTouchEvent(MotionEvent event) {
    //1. this works:
    float x = event.getX();
    float y = event.getY();
    Oval oval = new Oval(x, y, this);
    ovals.add(oval);
    invalidate();
    return super.onTouchEvent(event);
}

@Override
public boolean onDown(MotionEvent arg0) {
    return false;
}

@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float x,
        float y) {
    //2. this doesn't work:
    Oval oval = new Oval(x, y, this);
    ovals.add(oval);
    invalidate();
    return true;
}

@Override
public void onLongPress(MotionEvent arg0) {
    //3. this doesn't work:
    ovals.clear();
    invalidate();
}

@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float x,
        float y) {
    //2. this doesn't work:
    Oval oval = new Oval(x, y, this);
    ovals.add(oval);
    invalidate();
    return true;
}

@Override
public void onShowPress(MotionEvent arg0) {
    // TODO Auto-generated method stub

}

@Override
public boolean onSingleTapUp(MotionEvent arg0) {
    // TODO Auto-generated method stub
    return false;
}

}

ご覧のとおり、「gestureScanner」パラメーターは使用していません。使用する必要があるかもしれませんが、どこでどのように使用するのかわかりません。

私を助けてください!どうも!

4

0 に答える 0