【问题标题】:How to manage the Blank White Loading screen of an Android Webview?如何管理 Android Webview 的空白加载屏幕?
【发布时间】:2011-07-15 07:41:20
【问题描述】:

这更像是一个视觉问题,而不是直接问题,但是当我的应用程序中加载 WebView 时,屏幕会在 2-4 秒内为空白,直到内容完全加载。时间取决于正在加载的内容的大小。

有没有办法管理这个,让屏幕只在加载时刷新到内容?像“加载......”动画或类似的东西?我只是不希望将纯白屏幕呈现给我的用户。

我有一个启动画面,然后加载 WebView。在初始空白暂停(加载时)之后,WebView 工作正常,但我想将它保持在特定屏幕上,直到页面加载或带有进度加载器的黑屏。

可能有什么东西可以检测到加载完成吗?如果是这样,我可以将其用作触发器。

有人知道管理这个空白屏幕的方法吗?

谢谢!

/r

【问题讨论】:

    标签: android webview screen loading


    【解决方案1】:

    您也可以使 webview 透明:

    webview.setBackgroundColor(0x00000000); 
    

    【讨论】:

    • 这是为我修好的果酱。
    • 在 XML 中添加 android:background="@android:color/transparent" 没有任何效果。 webView.setBackgroundColor(Color.TRANSPARENT) 确实如此。
    • 它会不会让应用看起来像冻结了几秒钟,直到 url 加载?
    【解决方案2】:

    只需将此代码放在 onCreate 中

                   ProgressDialog _dialog ;                   
                   my_web_view.setWebViewClient(new WebViewClient(){
    
    
           @Override
           public void onPageStarted(WebView view, String url, Bitmap favicon) {
            // TODO Auto-generated method stub
            _dialog =ProgressDialog.show(Store_locator.this, "", "Please wait...");
            super.onPageStarted(view, url, favicon);
           }
           @Override
           public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);
            _dialog.dismiss();
           }
    
           @Override
           public void onReceivedError(WebView view, int errorCode,
             String description, String failingUrl) {
            // TODO Auto-generated method stub
            super.onReceivedError(view, errorCode, description, failingUrl);
            try{
             _dialog.dismiss();
            }catch (Exception e) {
             // TODO: handle exception
            }
           }
    
          });
    

    【讨论】:

    • 对我来说没用 - onPageFinished 调用得太早了,所以这 2-4 秒的白屏仍然没有修复
    【解决方案3】:

    这个问题的答案是没有好的答案。正如您所说,您想要的是 webview 显示当前内容,直到加载新内容......就像普通浏览器一样。它不会那样做。

    您可以显示加载动画,但这仍然不是很好的用户体验。如果您制作全屏类型的动画,用户会被闪烁的屏幕所震撼。如果您在顶部/底部进行浏览器类型的进度,它看起来很奇怪,因为您仍然有大部分页面是白色的。

    【讨论】:

      【解决方案4】:

      也许你可以看看上一期。

      How to listen for a WebView finishing loading a URL?

      【讨论】:

      • 谢谢 - 完美的开始。我在搜索错误的关键字!
      • 有时,即使页面没有完全呈现,onPageFinished 也会被调用,所以你可能会在 webview 上得到一个空白屏幕。要在页面完全呈现之前显示进度对话框,您必须使用 onLoadResource 并检查页面的进度。检查这个答案stackoverflow.com/a/31537328/1066839
      【解决方案5】:

      要管理空白白屏,您可以为布局 xml 设置适当的背景颜色(不是白色),使 webview 的可见性在布局 xml 文件中消失,并向其中添加 webviewclient 以及每当加载URL 已完成,将 webview 的可见性设置为可见。

      
                  public void onPageFinished(WebView view, String url) {
                      // do your stuff here
                      webView.setVisibility(View.VISIBLE);
                  }
              });
      

      【讨论】:

        【解决方案6】:

        webView.setBackgroundColor(Color.TRANSPARENT) 删除 webview 的白屏

        【讨论】:

          【解决方案7】:
          webview.setBackgroundColor(0x00000000);
          

          为我工作 例如:代替0x00000000,我使用我的颜色代码6424633(十六进制代码 - #620839 用于红色背景

          因此,当启动屏幕意图打开 Mainactivity 时,将显示红色背景,而不是显示白色空白屏幕,而当 webview 加载 URL 时,它将消失。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-08-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多