Определить, когда WebView загружает все свои изображения - PullRequest
0 голосов
/ 25 октября 2018

Я использую WebView, который загружает страницу с некоторыми изображениями .. Мне нужно точно определить, когда он заканчивает загрузку и рендеринг всех изображений на странице.

Я пытался использовать "onPageFinished ", но вызывается до того, как все изображения полностью загружены и видимы.

То же самое относится к " onProgressChanged " ..

Есть ли метод, в которомЯ могу знать, когда именно мой WebView полностью загружает все свои виды и изображения, и они видны на экране ??

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

В своем рабочем коде я использую следующий вариант:

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);
0 голосов
/ 25 октября 2018

если у вас есть несколько перенаправлений, он может потерпеть неудачу.Этот подход решает большинство проблем, хотя

логическое 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; 
        }
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...