如何在网络视图完全呈现之前消除白屏?

时间:2018-07-31 15:31:20

标签: android android-webview

我有一个通过loadData()加载的Web视图,但是在呈现时,它总是在加载正确的数据之前先显示一秒钟的白页。

holder.webView.setWebChromeClient(new WebChromeClient(){
        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            super.onProgressChanged(view, newProgress);
            if(newProgress==100){
                holder.webView.setVisibility(View.VISIBLE);
            }
        }
});

我已经试图使Web视图仅在完全加载后可见,但是没有运气。

有没有简单的方法可以摆脱这种情况?

2 个答案:

答案 0 :(得分:0)

您可以隐藏它,直到完成加载为止,您可以按照以下说明听完它:

mWebView.setWebViewClient(new WebViewClient() {

public void onPageFinished(WebView view, String url) {
    // show it
  }
});

更多信息可以在this answer

中找到

答案 1 :(得分:0)

就像您说的那样,页面完全加载后需要一些时间来处理数据。由于时间是可以预测的(200毫秒至1000毫秒),因此可以在页面加载后使用延迟,并在1秒或处理页面所需的最长时间后显示。

new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            holder.webView.setVisibility(View.VISIBLE);
        }
    }, MAX_TIME_TAKEN_MILLIS);

请注意,为了在隐藏期间发挥作用,请使用VIEW.INVISIBLE而不是VIEW.GONE