缩放在下一个imageview上保留

时间:2013-09-13 14:36:10

标签: java android

我非常烦人的问题。希望你能帮帮我。

这部分申请很简单。当用户点击NEXT或PREVIOUS按钮时,imageview会切换到上一个或下一个可用图像。它工作得很好,但仅当用户不使用多点触控到ZOOM图像时。请检查下面的图片,看看我的问题是什么。我正在使用 TouchImageView 库来缩放图像。

图像1:这是处于正常状态的图像。

enter image description here

IMAGE 1 - ZOOM:用户决定使用多点触控,因为它想要缩放图像。

enter image description here

图像2:用户点击下一步按钮,但屏幕上出现下一张图像,但它处于ZOOMED状态(从上一张图像开始)。

enter image description here

相反它应该是这样的:

enter image description here

有没有人知道如何“重置”图像,即使当前图片被缩放,下一张图片也不应该被缩放?

1 个答案:

答案 0 :(得分:1)

假设您正在谈论this TouchImageView,您可以添加一个包含逻辑内部的方法

public boolean onScale(ScaleGestureDetector detector);

在名为setScaleFactor(float scaleFactor, float focusX, floatY);

的方法中

这样,onScale方法看起来像.-

@Override
public boolean onScale(ScaleGestureDetector detector) { 
    float mScaleFactor = detector.getScaleFactor();
    setScaleFactor(mScaleFactor, detector.getFocusX(), detector.getFocusY());

    return true;
}

你可以打电话

setScaleFactor(1.0f, 0.5f, 0.5f);

“重置”比例。

修改

假设您正在使用上面链接中给出的TouchImageView实现,setScaleFactor将如下所示.-

public void setScaleFactor(float mScaleFactor, float focusX, float focusY) {
    float origScale = saveScale;
    saveScale *= mScaleFactor;
    if (saveScale > maxScale) {
        saveScale = maxScale;
        mScaleFactor = maxScale / origScale;
    } else if (saveScale < minScale) {
         saveScale = minScale;
         mScaleFactor = minScale / origScale;
    }

    if (origWidth * saveScale <= viewWidth || origHeight * saveScale <= viewHeight) {
        matrix.postScale(mScaleFactor, mScaleFactor, viewWidth / 2, viewHeight / 2);
    } else {
        matrix.postScale(mScaleFactor, mScaleFactor, focusX, focusY);
    }
    fixTrans();
}