Android:如何实现连续缩放功能

时间:2011-09-17 12:16:18

标签: android zoom

我正在寻找一种实现连续缩放的方法。我不断意味着我想缩放到一个位置并从那里缩放到另一个位置,依此类推。就像在浏览器中一样。

到目前为止,我的方法只能进行一次变焦并在下一次之前重置。

首先,我计算手指与中间点之间的距离。

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
}

有更好的累积方法吗?

1 个答案:

答案 0 :(得分:0)

如果要进行动画缩放,则必须在计时器中计算动画。这意味着随着时间的推移,您将从一个矩阵转换为另一个矩阵,使视图无效,并在onDraw中应用结果矩阵。 这样,您就可以从一个缩放级别平滑过渡到另一个缩放级别。