как отключить рисование при масштабировании в пользовательском представлении - PullRequest
0 голосов
/ 11 апреля 2020

Когда я масштабирую двумя пальцами, также включается рисование того, как это остановить. Я не хочу рисовать при масштабировании. когда я касаюсь только одного пальца, он рисует линию на холсте, но когда я пытаюсь масштабировать, используя 2 пальца, линия также рисует там

 @Override
    protected void onDraw(Canvas canvas) {
        clipBounds = canvas.getClipBounds();
        canvas.save();
        canvas.scale(mScaleFactor, mScaleFactor, mStartX, mStartY);
        drawBackground(canvas);
        drawPaths(canvas);
        canvas.drawPath(mDrawPath, mDrawPaint);
        canvas.restore();
    }

Детектор жестов масштаба

private class ScaleListener
            extends ScaleGestureDetector.SimpleOnScaleGestureListener {
        @Override
        public boolean onScale(ScaleGestureDetector detector) {
            isZoomEnable = true;
            mScaleFactor *= detector.getScaleFactor();

            // Don't let the object get too small or too large.
            mScaleFactor = Math.max(1.0f, Math.min(mScaleFactor, 5.0f));

            invalidate();
            return true;
        }
    }

событие касания

 @Override
    public boolean onTouchEvent(MotionEvent event) {
        mStartX = event.getX();
        mStartY = event.getY();
        mScaleDetector.onTouchEvent(event);
        float touchX = (event.getX() + clipBounds.left) / mScaleFactor;
        float touchY = (event.getY() + clipBounds.top) / mScaleFactor;

        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                mDrawPath.reset();
                mDrawPath.moveTo(touchX, touchY);
                mUndonePaths.clear();
                //mDrawPath.addCircle(touchX, touchY, mStrokeWidth/10, Path.Direction.CW);
                break;
            case MotionEvent.ACTION_MOVE:
                mDrawPath.lineTo(touchX, touchY);
                break;
            case MotionEvent.ACTION_UP:
                mDrawPath.lineTo(touchX, touchY);
                mPaths.add(mDrawPath);
                mPaints.add(mDrawPaint);
                mDrawPath = new Path();
                initPaint();
                break;
            default:
                return false;
        }
        invalidate();
        return true;

    }
...