XML启动画面 -> 显示Webview

5

感谢您尝试解决我的问题!

目前,我的应用程序基本上使用Android Web视图加载网页。缺点是有时(网络连接较差)需要超过10秒才能加载完整个网页。有没有一种方法可以在网页加载时创建某种类似于闪屏XML“加载”屏幕的东西?

请查看我的代码...

package com.ect;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
import android.webkit.CookieSyncManager;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

public class SomeActivity extends Activity {

    /** Called when the activity is first created. */

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //THIS IS WHAT I WANT: setContentView(R.layout.main);

        CookieSyncManager.createInstance(getBaseContext());

        // Let's display the progress in the activity title bar, like the
        // browser app does.


        getWindow().requestFeature(Window.FEATURE_PROGRESS);

        WebView webview = new WebView(this);
        setContentView(webview);


        webview.getSettings().setJavaScriptEnabled(true);

        final Activity activity = this;
        webview.setWebChromeClient(new WebChromeClient() {
        public void onProgressChanged(WebView view, int progress) {
             // Activities and WebViews measure progress with different scales.
             // The progress meter will automatically disappear when we reach 100%
             activity.setProgress(progress * 1000);
        }
      });

webview.setWebViewClient(new WebViewClient() {

public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        //Users will be notified in case there's an error (i.e. no internet connection)
        Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
}

public void onPageFinished(WebView view, String url) {
    CookieSyncManager.getInstance().sync();
}
});

CookieSyncManager.getInstance().startSync();
CookieSyncManager.getInstance().sync();

     //This will load the webpage that we want to see
      webview.loadUrl("http://www.web.com/");

   }
}

这是我的代码。如果您仔细看,我有一个注释说:“我想要的是:...”

那个注释会调用main.xml文件进行显示,但如果我使用那个注释,main.xml文件将被显示,但webview永远不会出现...

我该如何显示main.xml文件,然后(一旦web视图加载完成)显示网页?


请看这里,我相信这个问题已经被回答了。它基本上是覆盖 WebViewClient 类的一些方法。[https://dev59.com/yW025IYBdhLWcg3wIyKf] - Matt K
3个回答

3
你需要创建一个 WebViewClient 对象并覆盖 onPageFinished() 方法。然后使用 webView.setWebViewClient() 将上面创建的 WebViewClient 对象设置到 WebView 中。现在可以在 onPageFinished() 中运行一些代码,例如 setContentView(),以在加载完成后将内容视图从加载屏幕更改为 Web 视图。
这个教程可能会对你有所帮助,尽管它不完全是你所需要的。 http://www.giantflyingsaucer.com/blog/?p=1331

3

您必须使用onPageFinished()事件。

这里是官方参考点击查看

您的主要活动必须setContentView(R.layout.main);函数onPageFinished()必须setContentView(webview);


谢谢 Piperoman!我完全是 Android 开发的新手... 你可以给我一些代码吗? - Nick Chubb

3
你可以像这样做,在你的布局根Frame布局(或相对布局)中,做如下操作。
<Framelayout android:layout_height="fill_parent" android:layout_width="fill_parent"
....>

    <Webview android:layout_height="fill_parent" android:layout_width="fill_parent"/>

    <include android:layout_height="fill_parent" android:layout_width="fill_parent"  
    layout="@loadingLayout"/>

</Framelayout>

当网页视图加载完成后,只需将包含的组件可见性更改为Gone。
希望能帮到你。

很抱歉,我没有所有代码,但我会尽快发布更完整的示例。 - R.daneel.olivaw

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接