我正在寻找一种实现连续缩放的方法。我不断意味着我想缩放到一个位置并从那里缩放到另一个位置,依此类推。就像在浏览器中一样。
到目前为止,我的方法只能进行一次变焦并在下一次之前重置。
首先,我计算手指与中间点之间的距离。
public boolean onTouchEvent(MotionEvent event) {
if(mode == ZOOM) {
float newDist = spacing(event);
scale = newDist / oldDist;
midPoint(midPoint, event);
invalidate();
}
方法invalidate调用onDraw,我告诉矩阵进行缩放。
protected void onDraw(Canvas canvas) {
matrix = canvas.getMatrix();
matrix.postScale(scale, scale, midPoint.x, midPoint.y);
canvas.setMatrix(matrix);
// drawing code
}
有更好的累积方法吗?
答案 0 :(得分:0)
如果要进行动画缩放,则必须在计时器中计算动画。这意味着随着时间的推移,您将从一个矩阵转换为另一个矩阵,使视图无效,并在onDraw中应用结果矩阵。 这样,您就可以从一个缩放级别平滑过渡到另一个缩放级别。