Когда я масштабирую двумя пальцами, также включается рисование того, как это остановить. Я не хочу рисовать при масштабировании. когда я касаюсь только одного пальца, он рисует линию на холсте, но когда я пытаюсь масштабировать, используя 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;
}