猿问

在Android WebView中启用/禁用缩放

WebSettings中有一些与缩放有关的方法:


WebSettings.setSupportZoom

WebSettings.setBuiltInZoomControls

我注意到它们在某些设备上的工作方式有所不同。例如,在我的Galaxy S上,默认情况下启用缩放功能,但在LG P500上则禁用该功能(现在,我不知道如何仅启用缩放功能,但隐藏缩放按钮)。


在P500上,当我打电话时,setBuiltInZoomControls(true)我可以同时使用这两种变体(多点触控和按钮)。


如何在LG P500等设备上启用多点触控缩放并禁用缩放按钮?(另外,我知道在HTC设备上存在相同的问题)


更新:这几乎是该解决方案的完整代码


if (ev.getAction() == MotionEvent.ACTION_DOWN ||

        ev.getAction() == MotionEvent.ACTION_POINTER_DOWN ||

        ev.getAction() == MotionEvent.ACTION_POINTER_1_DOWN ||

        ev.getAction() == MotionEvent.ACTION_POINTER_2_DOWN ||

        ev.getAction() == MotionEvent.ACTION_POINTER_3_DOWN) {

    if (multiTouchZoom && !buttonsZoom) {

        if (getPointerCount(ev) > 1) {

            getSettings().setBuiltInZoomControls(true);

            getSettings().setSupportZoom(true);

        } else {

            getSettings().setBuiltInZoomControls(false);

            getSettings().setSupportZoom(false);

        }

    }

}


if (!multiTouchZoom && buttonsZoom) {

    if (getPointerCount(ev) > 1) {

        return true;

    }

}

这段代码在我onTouchEvent的WebView重写方法中。


largeQ
浏览 1868回答 3
3回答

慕沐林林

我查看了源代码,WebView并得出结论,没有完美的方法可以完成您所要的内容。我最终要做的是继承WebView和覆盖OnTouchEvent。在OnTouchEventfor中ACTION_DOWN,我检查有多少个指针正在使用MotionEvent.getPointerCount()。如果有多个指针,则调用setSupportZoom(true),否则调用setSupportZoom(false)。然后我打电话给super.OnTouchEvent().这将在滚动时有效地禁用缩放功能(从而禁用缩放控件),并在用户即将捏住缩放时启用缩放功能。这不是一个好方法,但是到目前为止,它对我来说效果很好。请注意,它getPointerCount()是在2.1中引入的,因此如果支持1.6,则必须做一些额外的工作。
随时随地看视频慕课网APP

相关分类

Android
我要回答