ScaleGestureDetector を使用したカスタム ビューがあり、ピンチしてズーム アクションを使用したいと考えています。ビューがかなり大きい場合は問題なく動作しますが、小さい場合はズームインのみが適切に機能し (ビューに 2 本の指を置き、異なる方向に動かします)、ズームアウトしようとすると (ビューに 2 本の指を置き、一緒に移動します)何も起こりません。スクリーンショットは次のとおりです。
問題は、中央にある小さなビューに表示されます。上部と下部の大きなビューでは、ズームインとズームアウトが適切に機能します。
コードは次のとおりです。
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)
{
}
}
小さなビューでズームアウトを機能させるには?