希望MainActivity在完全加载时显示

时间:2017-05-10 07:06:18

标签: android xml

我的代码在SplashActivity上使用进度条计为100%并显示MainActivity。但是在我的MainActivity上,我还需要等待大约10秒才能启动功能。

如何解决这个问题?

protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);

        progressBar=(ProgressBar)findViewById(R.id.progressBar);
        progressBar.setProgress(0);
        textView=(TextView)findViewById(R.id.textView);
        textView.setText("");

        final long period = 100;
        timer=new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                //this repeats every 100 ms
                if (i<100){
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            textView.setText(String.valueOf(i)+"%");
                        }
                    });
                    progressBar.setProgress(i);
                    i++;
                }else{
                    //closing the timer
                    timer.cancel();
                    Intent intent =new Intent(SplashActivity.this,MainActivity.class);
                    startActivity(intent);
                    // close this activity
                    finish();
                }
            }
        }, 0, period);
    }

}

2 个答案:

答案 0 :(得分:0)

使用 ViewTreeObserver 获取UI加载完成事件

ViewTreeObserver vto = mylayout.getViewTreeObserver();      
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {          
     @Override          
     public void onGlobalLayout() {              
        // do something now when the object is loaded 

     }      
}); 

答案 1 :(得分:0)

如下所示,一旦页面完全加载,则关闭对话框并将其显示给用户。

private ProgressDialog dialog = new ProgressDialog(MainActivity.this);

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

WebView webView = (WebView) findViewById(R.id.webView1);

Bundle extras = getIntent().getExtras();
String url=extras.getString("adres");

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {                  
        if (dialog.isShowing()) {
            dialog.dismiss();
        }
    }
});
dialog.setMessage("Loading..Please wait.");
dialog.setCanceledOnTouchOutside(false);
dialog.show();
webView.loadUrl(url);



WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
}