【问题标题】:XML Splash Screen -> Display WebviewXML 启动画面 -> 显示 Web 视图
【发布时间】:2011-12-21 16:40:54
【问题描述】:

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

目前我的应用程序基本上使用 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 视图)显示网页?

【问题讨论】:

  • look here,我相信这已经得到了回答。它基本上覆盖了 WebViewClient 类的一些方法。

标签: android xml cookies webview


【解决方案1】:

您需要创建一个 WebViewClient 对象并覆盖 onPageFinished() 方法。然后使用webView.setWebViewClient() 将上面创建的WebViewClient 对象设置为WebView。现在您可以在onPageFinished() 中运行一些代码,例如setContentView(),以便在加载完成后将内容视图从加载屏幕更改为网页视图。

本教程可能对您有所帮助,尽管它并不完全符合您的需要。 http://www.giantflyingsaucer.com/blog/?p=1331

【讨论】:

    【解决方案2】:

    您必须使用事件 onPageFinished()。

    这里是官方参考Clickme

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

    【讨论】:

    • 感谢派罗曼!我对使用 Android 进行开发完全不熟悉...有什么办法可以给我一些代码吗?
    【解决方案3】:

    你可以做这样的事情,在你的布局根框架布局(或相对布局)做这样的事情。

    <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>
    

    当 web 视图完成加载后,只需将包含的组件可见性更改为 Gone。

    希望对你有帮助..

    【讨论】:

    • 很抱歉,我没有所有代码,但我会尽量发布更完整的示例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 2021-12-17
    • 2021-11-15
    相关资源
    最近更新 更多