可以通过 WebViewClient 的回调函数 onPageStartedonPageFinished 来实现。

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;
    }
});
Android WebView 滑动禁用图片,滑动后恢复:高效优化技巧

原文地址: https://www.cveoy.top/t/topic/nVAe 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录