【问题标题】:Detect when a WebView loads all its images检测 WebView 何时加载其所有图像
【发布时间】:2019-04-04 18:21:50
【问题描述】:

我正在使用一个 WebView 来加载一个包含一些图像的页面.. 我需要准确检测它何时完成加载和渲染页面中的所有图像。

我尝试使用 "onPageFinished",但它会在所有图像完全下载并可见之前被调用。

“onProgressChanged”也是如此。

有没有一种方法可以让我知道我的 WebView 何时完全加载其所有视图和图像并且它们在屏幕上可见??

【问题讨论】:

  • 你试过WebChromeClient了吗
  • @AD10 你能举个例子吗?

标签: android android-webview


【解决方案1】:

在我的工作代码中,我正在使用下一个变体:

WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setLoadWithOverviewMode(true);

// try to use this pieсe of code 
webView.setWebViewClient(new WebViewClient() {
    public void onPageFinished(WebView view, String url) {

         // put here your code
         System.out.println("All images are downloaded and displayed");

    }
});

webView.addJavascriptInterface(this, "android");
webView.loadDataWithBaseURL(null, content, "text/html", "UTF-8", null);

【讨论】:

    【解决方案2】:

    如果您有多个重定向,它可能会失败。这种方法虽然解决了大多数问题

    boolean loadingFinished = true; 布尔重定向 = false;

    mWebView.setWebViewClient(new WebViewClient() {
    
        @Override
        public boolean shouldOverrideUrlLoading(
                WebView view, WebResourceRequest request) {
            if (!loadingFinished) {
               redirect = true;
            }
    
            loadingFinished = false;
            webView.loadUrl(request.getUrl().toString());
            return true;
        }
    
        @Override
        public void onPageStarted(
                WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            loadingFinished = false;
            //SHOW LOADING IF IT ISNT ALREADY VISIBLE  
        }
    
        @Override
        public void onPageFinished(WebView view, String url) {
            if (!redirect) {
               loadingFinished = true;
            }
    
            if (loadingFinished && !redirect) {
                //HIDE LOADING IT HAS FINISHED
            } else {
                redirect = false; 
            }
        }
    });
    

    【讨论】:

    • 我试过这段代码,但网址是直接的,不会进行任何重定向,并且在所有图像下载并可见之前仍会触发“onPageFinished”。
    猜你喜欢
    • 1970-01-01
    • 2014-03-25
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多