2

我已经实现了以下代码。让我知道当着陆方法开始时我必须在哪里更改代码以绘制点。

目前在 touch MOVE 方法运行时线条绘制流畅。但如果我点击然后点不是绘图。

我想在开始 TOUCH DOWN 方法时画点。

请给出任何解决方案。

    mPaint = new Paint();
        mPaintText = new Paint();
        mPaint.setAntiAlias(true);
        mPaint.setDither(true);
        mPaint.setColor(Color.BLUE);
        mPaint.setStyle(Paint.Style.STROKE);
        mPaint.setStrokeJoin(Paint.Join.ROUND);
        mPaint.setStrokeCap(Paint.Cap.ROUND);
        mPaint.setStrokeWidth(7);

        mCanvas = new Canvas();
        mPath = new Path();



@Override
    public boolean onTouch(View arg0, MotionEvent event) {
        float x = event.getX();
        float y = event.getY();

        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:

                 touch_start(x, y);
             invalidate();
                 break;

               case MotionEvent.ACTION_MOVE:
               touch_move(x, y);
            invalidate();
                break;

               case MotionEvent.ACTION_UP:
               touch_up();
           invalidate();

                break;
        }
        return true;
    }


private float mX, mY;
    private static final float TOUCH_TOLERANCE = 4;

    private void touch_start(float x, float y) {

mPath.reset();
        mPath.moveTo(x, y);
        mX = x;
        mY = y;

}

    private void touch_move(float x, float y) {
        float dx = Math.abs(x - mX);
        float dy = Math.abs(y - mY);
        if (dx >= TOUCH_TOLERANCE || dy >= TOUCH_TOLERANCE) {
            mPath.quadTo(mX, mY, (x + mX) / 2, (y + mY) / 2);
            mX = x;
            mY = y;
        }
    }

private void touch_up() {
        mPath.lineTo(mX, mY);

        mCanvas.drawPath(mPath, mPaint);

        Paint newPaint = new Paint(mPaint); // Clones the mPaint object
        mPath = new Path();

    }


@Override
    protected void onDraw(Canvas canvas) {

        canvas.drawPath(mPath, mPaint);

}
4

1 回答 1

0

试试这个,Android FingerPaint 样例不画点?

于 2013-06-23T07:04:12.587 回答