我非常烦人的问题。希望你能帮帮我。
这部分申请很简单。当用户点击NEXT或PREVIOUS按钮时,imageview会切换到上一个或下一个可用图像。它工作得很好,但仅当用户不使用多点触控到ZOOM图像时。请检查下面的图片,看看我的问题是什么。我正在使用 TouchImageView 库来缩放图像。
图像1:这是处于正常状态的图像。
IMAGE 1 - ZOOM:用户决定使用多点触控,因为它想要缩放图像。
图像2:用户点击下一步按钮,但屏幕上出现下一张图像,但它处于ZOOMED状态(从上一张图像开始)。
相反它应该是这样的:
有没有人知道如何“重置”图像,即使当前图片被缩放,下一张图片也不应该被缩放?
答案 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();
}