0

Androidで線を引こうとしていますが、オブジェクトを速く動かすと点線が描かれ、オブジェクトをゆっくり動かすと完全な線が描かれる完全な線が描かれないため、満足していません.理由を教えてください.これは起こります。点線ではなく完全な行が必要です。私のコードは次のとおりです。ビューのオンタッチイベント:

public boolean onTouch(View view, MotionEvent event) {
    // TODO Auto-generated method stub
    final int X = (int) event.getRawX();
    final int Y = (int) event.getRawY();
    switch (event.getAction() & MotionEvent.ACTION_MASK) {
    case MotionEvent.ACTION_DOWN:
        RelativeLayout.LayoutParams lParams = (RelativeLayout.LayoutParams) view
                .getLayoutParams();

        _xDelta = X - lParams.leftMargin;
        Log.e("ACTION DOWN X", "" + Y + "---" + lParams.leftMargin);
        _yDelta = Y - lParams.topMargin;
        Log.e("ACTION DOWN Y", "" + Y + "---" + lParams.leftMargin);

        break;
    case MotionEvent.ACTION_UP:
        break;
    case MotionEvent.ACTION_POINTER_DOWN:
        break;
    case MotionEvent.ACTION_POINTER_UP:
        break;
    case MotionEvent.ACTION_MOVE:
        RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) view
                .getLayoutParams();
        layoutParams.leftMargin = X - _xDelta;
        Log.e("ACTION Move left margin", "" + (X - _xDelta));
        layoutParams.topMargin = Y - _yDelta;
        Log.e("ACTION Move top margin", "" + (Y - _yDelta));
        layoutParams.rightMargin = -250;
        layoutParams.bottomMargin = -250;

        view.setBackgroundColor(random.nextInt());

        view.setLayoutParams(layoutParams);
        draw = new DrawLine(MainActivity.this, X - _xDelta, Y - _yDelta);
        root.addView(draw);

        break;
    }

    root.invalidate();
    return true;
}

そして、私の描画方法は次のようなものです:

@Override
    protected void onDraw(final Canvas canvas) {
        // TODO Auto-generated method stub
        super.onDraw(canvas);
        // paint.setColor(random.nextInt());
        paint.setStyle(Style.STROKE);
        paint.setStrokeWidth(4);
        canvas.drawPoint(startX, startY, paint);


    }

また、すべての図面をクリアする方法も知りたいです。
これを解決するのを手伝ってください。ありがとうございました。

4

1 に答える 1

1

では、点だけを描いたときに線が描かれることをどのように期待しますか? タッチ イベントの登録/処理は、指が触れた新しいピクセルごとに発生するほど高速ではありません。パスを使用してポイントを保存し、パス内のポイントを使用して線/パスを描画します。

于 2013-03-20T13:42:37.943 に答える