Android WebView使用ScaleDetector进行缩放

时间:2010-07-07 13:44:25

标签: android webview zooming

HI,

当用户捏住并将手指移近/远离时,是否可以支持缩放WebView(类似于默认浏览器)。我使用2.2并尝试使用ScaleGestureDetector。问题是我似乎无法找到设置比例的方法。 WebView.getScale()返回通过zoomIn()和ZoomOut()更改的当前比例,但我找不到setScale()或默认情况下设置缩放的选项,让操作系统处理它。

安迪

3 个答案:

答案 0 :(得分:6)

使用:

webview.getSettings().setBuiltInZoomControls(true);

进行捏缩放并在屏幕上放置默认的放大/缩小按钮。

答案 1 :(得分:2)

您需要在WebView中实现onTouchEvent(MotionEvent)。

然后在那个事件中,将MotionEvent传递给ScaleGestureDetector,以便它可以处理它,然后调用super。

class ScalableWebView extends WebView implements ScaleGestureDetector.OnScaleGestureListener
{
    ScaleGestureDetector mScaleDetector = new ScaleGestureDetector(this, this);

    public boolean onTouchEvent(MotionEvent event)
    {
        if(mScaleDetector.onTouchEvent(event))
             return true;

        return super.onTouchEvent(event);
    }

    boolean onScaleBegin(ScaleGestureDetector detector) 
    {
     //handle scale event begin
    }

    boolean onScale(ScaleGestureDetector detector) 
    {
     //handle scale event
    }

    boolean onScaleEnd(ScaleGestureDetector detector) 
    {
     //handle scale event end
    }

}

答案 2 :(得分:0)

setScale,试试这个:

webView.setInitialScale((int)(100 * webView.getScale());