使用ScaleGestureDetector缩小小视图

时间:2013-04-29 15:01:20

标签: android android-view pinchzoom

我有一个带有ScaleGestureDetector的自定义视图,我想在其上使用pinch来缩放动作。 当视图相当大时它可以正常工作,但是当它很小时,只有zomm才能正常工作(我将两根手指放在视图上并向不同方向移动),当我尝试缩小时(将两根手指放在视图上一起移动)没有任何反应。这是截图: enter image description here

问题出现在中心的小视图中。 在顶部和底部较大的视图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)
    {
    }
}

如何缩小小视图的工作量?

1 个答案:

答案 0 :(得分: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获取原始代码。