0

我有一个非常烦人的问题。希望您能够帮助我。

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

图片 1:这是正常状态下的图片。

在此处输入图像描述

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

在此处输入图像描述

图像 2:用户点击下一个按钮,但屏幕上出现下一个图像,但它处于 ZOOMED 状态(来自上一个图像)。

在此处输入图像描述

相反,它应该是这样的:

在此处输入图像描述

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

4

1 回答 1

1

假设您正在谈论这个 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();
}
于 2013-09-13T14:46:20.633 回答