Как узнать, когда рендеринг WebView закончен - PullRequest
4 голосов
/ 22 марта 2012

Я хочу отображать индикатор выполнения во время загрузки WebView.Я скрываю это на OnPageFinished (), но это слишком рано.Webview по-прежнему отображает изображение.

В документации WebView говорится: «Когда вызывается onPageFinished (), изображение рендеринга может быть еще не обновлено. Чтобы получить уведомление о новом Picture, используйте onNewPicture (WebView,Picture). "

Однако OnNewPicture и интерфейс PictureListener устарели и устарели.Есть ли другой способ узнать, что рендеринг завершен?

Ответы [ 4 ]

2 голосов
/ 29 октября 2012

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

1 голос
/ 27 января 2015

Как насчет создания пользовательского WebChromeClient и переопределения его методов onReceivedIcon () или onProgressChanged (). OnReceivedIcon () будет запущен после загрузки favIcon и, используя onProgressChanged (), вы сможете узнать о ходе загрузки веб-просмотра. Я надеюсь, что это помогает

Пожалуйста, обратитесь к этому фрагменту кода

webView.setWebChromeClient(new CustomWebChromeClient());

Вы можете использовать onProgressChanged или onReceivedIcon все, что вам подходит.

public class CustomWebChromeClient extends WebChromeClient {

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

        if (newProgress==100) {
            progressBar.setVisibility(View.GONE);
            progressBar.setProgress(newProgress);
        }
    }

    @Override
    public void onReceivedIcon(WebView view, Bitmap icon) {
        // icon received here
        super.onReceivedIcon(view, icon);
    }
}
1 голос
/ 21 августа 2013

У меня такая же проблема, но нет способа узнать время. Единственный способ, которым я пользуюсь - это дать достаточно места для завершения рендеринга с помощью postDelayed ().

В моем случае достаточно 200 мс, если вы не используете тяжелое содержимое в тексте более 200 КБ.

1 голос
/ 17 октября 2012

Я думаю, вы можете добавить и выполнить функцию JavaScript в конце тега body своей веб-страницы, чтобы вызвать функцию интерфейса JavaScript, чтобы скрыть индикатор выполнения.Но остерегайтесь включения JavaScript в вашем WebView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...