加载webview时的Android Splash屏幕

时间:2013-03-06 12:04:22

标签: android webview splash-screen

我想在加载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时显示带有App徽标的初始屏幕。我该怎么做呢 ?我的代码是否正确?我在一段时间后获得了webview,但它似乎是空白的。

3 个答案:

答案 0 :(得分:1)

请在设置启动画面的位置显示对话框或启动其他活动。

  setContentView(R.layout.splash);

使用您首选的解决方案将此行替换为在新活动中看起来像启动或另一个完整启动屏幕的服装对话框。

如果您启动新活动,请在MainActivity中保留活动实例,并在网页加载完成后再完成启动屏幕活动。

我更喜欢你为它制作全屏对话框,因为与你的案例中的活动相比,它更容易保持对话。

答案 1 :(得分:0)

我建议您制作一个自定义对话框并在其中放置图片视图,并在webview的 onPageStarted 方法

上设置您想要的背景图片
@Override
                public void onPageStarted(WebView view, String url,
                        Bitmap favicon) {
                    // TODO Auto-generated method stub
                    super.onPageStarted(view, url, favicon);
                    ProgressDialog();
                    }

答案 2 :(得分:0)

不建议多次调用setContentView()。在主布局中添加ImageView(将其src设置为初始屏幕图像)。默认使用imageView.setVisibility(View.INVISIBLE);隐藏它。当您开始加载新网页时,请将webView展示次数更改为INVISIBLE,并将imageView展示次数更改为VISIBLE中的onPageStarted()。 加载完成后,将imageView的可见性更改为INVISIBLE,并将webView的可见性更改为VISIBLE中的onPageFinished()