加载webview时的安卓启动画面

3
我希望在Webview加载时显示启动画面。我使用以下代码,但是10秒后我看到一个黑色的Webview。请帮忙。
public class MainActivity extends Activity {

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

        setContentView(R.layout.activity_main);
        progressBar = (ProgressBar) findViewById(R.id.progressBar1);

        WebView myWebView = (WebView) findViewById(R.id.webview);
        WebSettings webSettings = myWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        myWebView.setVerticalScrollBarEnabled(false);
        myWebView.setHorizontalScrollBarEnabled(false);
        myWebView.getSettings().setLoadWithOverviewMode(true); 
        myWebView.getSettings().setUseWideViewPort(true);
        myWebView.getSettings().setRenderPriority(RenderPriority.HIGH);

        WebView webView = (WebView) findViewById(R.id.webview);
        webView.addJavascriptInterface(new WebAppInterface(this), "Android");
        myWebView.setWebViewClient(new WebViewClient());
        myWebView.setWebViewClient(new MyWebViewClient());
        myWebView.loadUrl("http://www.XXXXXXX.com);
        setContentView(R.layout.splash);
    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }


    private class MyWebViewClient extends WebViewClient {


         public void onPageFinished (WebView myWebView, String url) {
             setContentView(R.layout.activity_main);
            } 
 }

我希望在webview加载的同时显示带有应用程序Logo的闪屏界面。我该如何做?我的代码正确吗? 我稍后获得了webview,但它似乎是空白的。

请明确问题。 - Vishal Vijay
@VishalVijay - 我希望在加载网页视图时显示带有应用程序Logo的启动画面。我该怎么做?我的代码正确吗?我过了一段时间后才得到webview,但它似乎是空白的。 - Yahoo
不建议多次调用 setContentView()。 - Vishal Vijay
不要在Android中创建启动画面。这违反了指南并会给用户带来不良的用户体验。http://developer.android.com/design/patterns/help.html - Mark Buikema
3个回答

1
请在设置闪屏点时显示对话框或启动另一个活动。
  setContentView(R.layout.splash);

请用您偏爱的方式替换此行,可以是类似于闪屏的自定义对话框,也可以是在新活动中的另一个全屏闪屏。

如果您启动了新活动,则在MainActivity中保留活动实例,并在网页加载完成后关闭闪屏活动。

我建议您为其制作全屏对话框,因为在您的情况下,与活动相比,更容易维护对话框。


0

不建议多次调用setContentView()。将ImageView添加到您的主要布局中(将其src设置为启动画面图像)。默认情况下,使用imageView.setVisibility(View.INVISIBLE);将其隐藏。在开始加载新页面时,在函数onPageStarted()中将webView的可见性更改为INVISIBLE,并将imageView的可见性更改为VISIBLE。 当加载完成时,在函数onPageFinished()中将imageView的可见性更改为INVISIBLE,将webView的可见性更改为VISIBLE


0
我建议您创建一个自定义对话框,并在其中放置ImageView,然后在WebView的onPageStarted方法中设置所需的背景图像。
@Override
                public void onPageStarted(WebView view, String url,
                        Bitmap favicon) {
                    // TODO Auto-generated method stub
                    super.onPageStarted(view, url, favicon);
                    ProgressDialog();
                    }

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