【问题标题】:Android Splash screen while loading webview加载 webview 时的 Android 启动画面
【发布时间】:2013-03-06 12:04:22
【问题描述】:

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

【问题讨论】:

  • 请把问题说清楚
  • @VishalVijay - 我希望在加载 Web 视图时,显示带有应用程序徽标的初始屏幕。我该怎么做呢 ?我的代码正确吗?一段时间后我得到了 webview,但它似乎是空白的。
  • 不建议多次调用 setContentView()。
  • 不要在 Android 中创建启动画面。这违反了指导方针,并且提供了糟糕的用户体验。 developer.android.com/design/patterns/help.html

标签: android webview splash-screen


【解决方案1】:

请在您设置启动画面的地方显示一个对话框或启动另一个活动。

  setContentView(R.layout.splash);

将此行替换为您喜欢的解决方案,可以是看起来像启动画面的服装对话框,也可以是新活动中的另一个完整启动屏幕。

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

我更喜欢你为它制作全屏对话框,因为与你的情况相比,它更容易维护对话框。

【讨论】:

    【解决方案2】:

    我会建议你制作一个自定义对话框并在其中放置图像视图,并在 webview 的 onPageStarted 方法上设置所需的背景图像

    @Override
                    public void onPageStarted(WebView view, String url,
                            Bitmap favicon) {
                        // TODO Auto-generated method stub
                        super.onPageStarted(view, url, favicon);
                        ProgressDialog();
                        }
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-29
        • 2012-03-24
        • 2018-07-16
        • 1970-01-01
        • 1970-01-01
        • 2022-01-20
        • 2015-10-07
        • 1970-01-01
        相关资源
        最近更新 更多