我正在使用this library处理Android stickerview
。我有一些自定义但坚持以下方法。
当我尝试放大缩小时,它将无法正常工作。 当我尝试从全视图(多点触控)旋转时,它也无法正常工作。 使用多点触控这个方法在这里执行我想要功能和捏捏同时单触工作正常 这里方法
适用于Multi-Touch
float disNew = spacing(event);
if (disNew == 0 || disNew < pointerLimitDis) {
scale = 1;
} else {
scale = disNew / oldDis;
scale = (scale - 1) * pointerZoomCoeff + 1;
}
float scaleTemp = (scale * Math.abs(dst_flipV.left - dst_resize.left)) / oringinWidth;
if (((scaleTemp <= MIN_SCALE)) && scale < 1 ||
(scaleTemp >= MAX_SCALE) && scale > 1) {
scale = 1;
} else {
lastLength = diagonalLength(event);
}
matrix.postScale(scale, scale, mid.x, mid.y);
invalidate();
单次触摸
matrix.postRotate((rotationToStartPoint(event) - lastRotateDegree) * 2, mid.x, mid.y);
lastRotateDegree = rotationToStartPoint(event);
float scales = diagonalLength(event) / lastLength;
if (((diagonalLength(event) / halfDiagonalLength <= MIN_SCALE)) && scales < 1 ||
(diagonalLength(event) / halfDiagonalLength >= MAX_SCALE) && scales > 1) {
scales = 1;
if (!isInResize(event)) {
isInResize = false;
}
} else {
lastLength = diagonalLength(event);
}
matrix.postScale(scales, scales, mid.x, mid.y);
invalidate();