WebSettings中有一些与缩放有关的方法:WebSettings.setSupportZoomWebSettings.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重写方法中。
3 回答
慕沐林林
TA贡献2016条经验 获得超9个赞
我查看了源代码,WebView
并得出结论,没有完美的方法可以完成您所要的内容。
我最终要做的是继承WebView
和覆盖OnTouchEvent
。在OnTouchEvent
for中ACTION_DOWN
,我检查有多少个指针正在使用MotionEvent.getPointerCount()
。如果有多个指针,则调用setSupportZoom(true)
,否则调用setSupportZoom(false)
。然后我打电话给super.OnTouchEvent().
这将在滚动时有效地禁用缩放功能(从而禁用缩放控件),并在用户即将捏住缩放时启用缩放功能。这不是一个好方法,但是到目前为止,它对我来说效果很好。
请注意,它getPointerCount()
是在2.1中引入的,因此如果支持1.6,则必须做一些额外的工作。
- 3 回答
- 0 关注
- 1867 浏览
添加回答
举报
0/150
提交
取消