1

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)
    {
    }
}

小さなビューでズームアウトを機能させるには?

4

1 に答える 1

0

Android には、ずさんなジェスチャーを認識するメカニズムがあります。小さなビューでズームアウトできるようにするには、ずさんなジェスチャの原因となるすべてのコードを削除して、独自の ScaleGestureDetector を作成する必要があります。ここから元のコードを取得できますhttps://code.google.com/p/android-vnc-viewer/source/browse/branches/antlersoft/androidVNC/src/com/antlersoft/android/bc/ScaleGestureDetector.java?r =164 .

于 2013-06-25T12:01:59.097 に答える