Android WebView和AgentWebview不刷新页面不闪屏隐藏头部或者某个标签

现在全局搜索需要加入这个功能,然而返回的地址却是带有头部百度和搜索框的,这些本来是可以通过tradeid进行客制化去掉,但是百度没抽出人来做,所以需要自己处理。
如果我们在webview中的WebViewClient里的OnPageFinished方法中做的话会出现闪屏,而且调用时机也可能会延迟,造成打开页面后隔了几秒才隐藏网页头部,显然不是我们要的效果,而OnPageStarted方法调用隐藏也没用。后面找到WebChromeClient的onProgressChanged进行处理

setWebChromeClient(new WebChromeClient() {

                    @Override
                    public void onReceivedTitle(WebView view, String title) {
                        super.onReceivedTitle(view, title);
                    }

                    @Override
                    public void onProgressChanged(WebView view, int newProgress) {
                        super.onProgressChanged(view, newProgress);
                        hideHeader(view, "");
                    }
                })

比如在Agentweb中:

 AgentWeb.with(this).setAgentWebParent(mLL, new LinearLayout.LayoutParams(-1, -1))
                .useDefaultIndicator().setWebViewClient(new WebViewClient() {

                    @Override
                    public void onPageStarted(WebView view, String url, Bitmap favicon) {
                        super.onPageStarted(view, url, favicon);
                    }

                    @Override
                    public void onPageFinished(WebView view, String url) {
                        super.onPageFinished(view, url);
                    }
                }).setWebChromeClient(new WebChromeClient() {

                    @Override
                    public void onReceivedTitle(WebView view, String title) {
                        super.onReceivedTitle(view, title);
                    }

                    @Override
                    public void onProgressChanged(WebView view, int newProgress) {
                        super.onProgressChanged(view, newProgress);
                        hideHeader(view, "");
                    }
                }).createAgentWeb().ready().go(videoUrl + getKeyword());

附上我这的js隐藏头部的代码:

    private void hideHeader(WebView view, String url) {
        String javascript = "javascript:function hideHeader() { "
                + "console.log('head.........................:', document.head);\n" +
                "var new_element = document.createElement(\"style\");\n" +
                "new_element.innerHTML =(`.se-page-hd-content { display: none!important; }`);\n" +
                "document.head.appendChild(new_element);"
                + "}";
        view.loadUrl(javascript);
        view.loadUrl("javascript:hideHeader();");
    }

即可在不闪屏刷新webview的情况下去掉头部,原生webview也一样。

猜你喜欢

转载自blog.csdn.net/kururunga/article/details/111934128