Android:闪屏和网络视图

Android:闪屏和网络视图,android,multithreading,webview,screen,splash-screen,Android,Multithreading,Webview,Screen,Splash Screen,我已经尝试了好几天了,想找到一个在加载webview时显示初始屏幕的解决方案 我环顾四周,有几种方法: -使活动仅显示初始屏幕,等待几秒钟,然后启动webview活动->这不是一个解决方案,因为所有加载在初始屏幕关闭后再次完成 第二种方法是这样的: myWebView = (WebView) findViewById(R.id.webview); myWebView.getSettings().setJavaScriptEnabled(true); myWebView.setScroll

我已经尝试了好几天了,想找到一个在加载webview时显示初始屏幕的解决方案

我环顾四周,有几种方法: -使活动仅显示初始屏幕,等待几秒钟,然后启动webview活动->这不是一个解决方案,因为所有加载在初始屏幕关闭后再次完成

  • 第二种方法是这样的:

       myWebView = (WebView) findViewById(R.id.webview);
    myWebView.getSettings().setJavaScriptEnabled(true);
    myWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 
    myWebView.setWebViewClient(new WebViewClient() {
       public void onPageFinished(WebView view, String url) {
           findViewById(R.id.webview).setVisibility(View.VISIBLE);
    
           //hide loading image
           findViewById(R.id.imageView1).setVisibility(View.GONE);
           //show webview
          }
        });
    
    这是可行的,但在过渡到webview时,仍然会出现轻微的白色屏幕。而且你也无法控制启动屏幕的时间

  • 第三个解决方案是我想做的,但是(即使在搜索和尝试了几天之后)不知道如何->在一个线程中显示初始屏幕,在另一个线程中准备webview的所有内容,然后简单地切换到webview

我的问题是,有人能告诉我从哪里开始第三种解决方案吗

  • 我想试试这样的东西!但我不知道如何将webview传递给另一个活动,从我读到的内容来看,这甚至不是一个好主意
有什么建议、想法、建议吗?有没有一种方法可以显示初始屏幕,在另一个线程中准备(膨胀)webview,然后在加载url(以及其他所有内容)后切换到它


谢谢

尝试在Webview上使用WebChromeClient。在WebChromeClient中,您有一个方法onProgressChange

当onProgressChange告诉您页面已完成加载时,您可以取消启动屏幕

编辑:
例如,您可以使用HttpGet在一个线程中调用Url并检索响应。收到响应后,可以使用loadData(…)方法加载webview。

尝试在webview上使用WebChromeClient。在WebChromeClient中,您有一个方法onProgressChange

当onProgressChange告诉您页面已完成加载时,您可以取消启动屏幕

编辑:
例如,您可以使用HttpGet在一个线程中调用Url并检索响应。收到响应后,您可以使用loadData(…)方法加载webview。

感谢您的回答,但正如我所说的,我希望使用第三种解决方案,在后台使用线程加载webview。我想知道这是否可能,以及如何做到。我知道你的建议已经足够了,但我真的想知道如何用另一种方法做到这一点……例如,你可以用HttpGet调用你的Url并检索响应。收到响应后,可以使用loadData(…)方法加载webview。感谢您的回答,但正如我所说的,我希望使用第三种解决方案,在后台使用线程加载webview。我想知道这是否可能,以及如何做到。我知道你的建议已经足够了,但我真的想知道如何用另一种方法做到这一点……例如,你可以用HttpGet调用你的Url并检索响应。得到响应后,可以使用loadData(…)方法加载webview。