Android WebView 滑动禁用图片,滑动后恢复:高效优化技巧
可以通过 WebViewClient 的回调函数 onPageStarted 和 onPageFinished 来实现。
在 onPageStarted 回调函数中,可以通过 WebView 的 settings 属性禁止加载图片:
webView.getSettings().setBlockNetworkImage(true);
在 onPageFinished 回调函数中,可以通过 WebView 的 settings 属性恢复加载图片:
webView.getSettings().setBlockNetworkImage(false);
接下来是完整的实现代码:
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
view.getSettings().setBlockNetworkImage(true);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.getSettings().setBlockNetworkImage(false);
}
});
在滑动过程中,需要监听 WebView 的滑动事件,在滑动开始时禁用图片,在滑动结束时恢复。
可以通过 WebView 的 setOnTouchListener 方法来实现监听滑动事件:
webView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
webView.getSettings().setBlockNetworkImage(true);
break;
case MotionEvent.ACTION_UP:
webView.getSettings().setBlockNetworkImage(false);
break;
}
return false;
}
});
完整代码如下:
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
view.getSettings().setBlockNetworkImage(true);
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.getSettings().setBlockNetworkImage(false);
}
});
webView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
webView.getSettings().setBlockNetworkImage(true);
break;
case MotionEvent.ACTION_UP:
webView.getSettings().setBlockNetworkImage(false);
break;
}
return false;
}
});
原文地址: https://www.cveoy.top/t/topic/nVAe 著作权归作者所有。请勿转载和采集!