我的代码在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);
}
}
答案 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);
}