我有一个带有 ScaleGestureDetector 的自定义视图,我想在其上使用捏合来缩放动作。当视图相当大时它可以正常工作,但是当它很小时只有 zomm in 才能正常工作(我将两根手指放在视图上并将它们移动到不同的方向),当我尝试缩小时(将两根手指放在视图上并且一起移动)没有任何反应。这是屏幕截图:
问题出现在中心的小视图中。在顶部和底部较大的视图中,放大和缩小工作正常。
代码是:
private class MyScaleGestureListener implements OnScaleGestureListener
{
public boolean onScale(ScaleGestureDetector detector)
{
scaleFactor *= detector.getScaleFactor();
if (scaleFactor < 1)
scaleFactor = 1;
int newScrollX = (int)((getScrollX() + detector.getFocusX()) * detector.getScaleFactor() - detector.getFocusX());
int newScrollY = (int)((getScrollY() + detector.getFocusY()) * detector.getScaleFactor() - detector.getFocusY());
scrollTo(newScrollX, newScrollY);
invalidate();
return true;
}
public boolean onScaleBegin(ScaleGestureDetector detector)
{
return true;
}
public void onScaleEnd(ScaleGestureDetector detector)
{
}
}
如何使缩小在小视图上工作?