android – WebView摆脱双击缩放.
作者:互联网
我读了很多关于缩放WebViews主题的门票,并没有找到我的案例的答案.
这是我的设置:
我通常使用这些设置的自定义webview:
getSettings().setBuiltInZoomControls(false);
getSettings().setSupportZoom(false);
getSettings().setUseWideViewPort(true);
getSettings().setLoadWithOverviewMode(true);
让我在这里注意,我依赖于OverviewMode以及WideViewPort来扩展我的WebView.
我还覆盖我的OnTouchEvent,并将所有合适的事件委托给Gesture检测器:
@Override
public boolean onTouchEvent(MotionEvent event) {
if (gestureDetector.onTouchEvent(event)) return true;
return super.onTouchEvent(event);
}
以下是其侦听器实现,它拦截所有doubleTap事件:
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
// Do nothing!
return true;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
// Do nothing!
return true;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
// Do nothing!
return true;
}
另外我覆盖了与zoom有关的这两个WebView方法:
@Override
public boolean zoomIn() {
return true;
}
@Override
public boolean zoomOut() {
return true;
}
除了所有这些选项之外,某个抽头频率将导致我的webview放大/缩小.
我没有找到一个禁用这种缩放的选项,此Zoom的MotionEvent似乎不适用于GestureDetector,并且覆盖zoomIn()zoomOut()方法也没有效果.
任何人都可以帮助我避免这种双击缩放WebView的行为吗?
解决方法:
有两种方法可以实现您的目标:
方法1
像这样实现GestureDetector.OnDoubleTapListener:
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
return false; //Nothing
}
@Override
public boolean onDoubleTap(MotionEvent e) {
//Indicates that this implementation has handled the double tap.
return true;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
//Indicates that this implementation has handled the double tap.
return true;
}
并将其附加到您的GestureDetector,如下所示:
gestureDetector.setOnDoubleTapListener(this);
方法2
您还可以使用WebSettings.setUseWideViewPort(false);并手动计算视图的大小.
这些方法可以帮助您实现显示所有内容的非可缩放Web视图.
public int getWindowWidth(Activity activity) {
Display display = ((WindowManager) activity.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
return width;
}
public int getInitialScale(Activity activity, int websiteWidth) {
return (getWindowWidth(activity) / websiteWidth) * 100;
}
标签:motionevent,android,zoom,webview,touch-event 来源: https://codeday.me/bug/20191001/1840660.html