Ниже приведен метод, позволяющий пользователям масштабировать холст. Пинч-зум работает нормально, теперь я просто хочу повернуть холст по движению пальца.
Я пробовал различные решения, но не нашел ни одного решения, которое бы соответствовало моему требованию.
как выполнить sh что, какой дополнительный код я должен сделать, чтобы выполнить sh то, что мне нужно.
if (mPaintor.mStatus == 4) {
if (mScale == 1.0F) {
return true;
}
mTx = i1 - mX;
mTy = i3 - mY;
mTmpMatrix.set(mMatrix);
mTmpMatrix.postTranslate(mTx, mTy);
if (isPaintOutScreen(mTmpMatrix, dxdy)) {
mTx = mTx + dxdy[0];
mTy = mTy + dxdy[1];
}
mMatrix.postTranslate(mTx, mTy);
if (mScale == 10)
mMatrix.reset();
mMatrix.invert(mInvMatrix);
mX = i1;
mY = i3;
reDraw(null);
}
if (mPaintor.mStatus == 3) {
i = 0;
try {
float f42 = (float) Math.sqrt((pMotionEvent.getX(0) - pMotionEvent.getX(1)) *
(pMotionEvent.getX(0) - pMotionEvent.getX(1)) +
(pMotionEvent.getY(0) - pMotionEvent.getY(1)) *
(pMotionEvent.getY(0) - pMotionEvent.getY(1)));
midPoint(newMidPoint, pMotionEvent);
float f44 = f42 - oldDist;
oldDist = f42;
if (f44 > 50.0F)
f44 = 50.0F;
else if (f44 < -50.0F)
f44 = -50.0F;
mScale = mOrigScale + (int) ((f44 / 10.0F) / mDensity);
if (mScale > MAX_SCALE) {
mScale = MAX_SCALE;
} else if (mScale < MIN_SCALE) {
mScale = MIN_SCALE;
}
mTmpMatrix.set(mMatrix);
mTmpMatrix.postScale(mScale * 1.0F / mOrigScale, mScale * 1.0F / mOrigScale, mPivotX, mPivotY);
if (isPaintOutScreen(mTmpMatrix, dxdy)) {
mTmpMatrix.postTranslate(dxdy[0], dxdy[1]);
}
mMatrix.set(mTmpMatrix);
if (mScale == 10)
mMatrix.reset();
mMatrix.invert(mInvMatrix);
reDraw(null);
mOrigScale = mScale;
mX = i1;
mY = i3;
} catch (IllegalArgumentException lIllegalArgumentException) {
mScale = mOrigScale;
}
}