1.新建一个线程,使用handle的延缓运行线程
new Handler().postDelayed(new Runnable() {
// 为了减少代码使用匿名Handler创建一个延时的调用
public void run() {
Intent i = new Intent(SplashActivity.this, MainActivity.class );
startActivity(i);
finish();
overridePendingTransition(R.anim. in_1, R.anim.out_1);
}
}, 2000 );//延缓2秒
2.通过handler延缓发送广播
public class SplashActivity extends Activity { private Handler handler;
private final int NOTIFY_CLOSE_ACTIVITY = 1;
private int SPLASH_DISPLAY_LENGHT = 2000; // 延迟两秒 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash); initialize();
handler.removeMessages(NOTIFY_CLOSE_ACTIVITY);
handler.sendEmptyMessageDelayed(NOTIFY_CLOSE_ACTIVITY, SPLASH_DISPLAY_LENGHT); } private void initialize() {
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
switch (msg.what ) {
case NOTIFY_CLOSE_ACTIVITY :
goMain();
break;
default:
break;
}
}
};
} private void goMain(){
Intent intent = new Intent(SplashActivity.this, MainActivity.class );
this.startActivity(intent);
this.finish();
};
}
3.使用动画
public class SplashActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); View view = View. inflate(this, R.layout. activity_splash, null);
setContentView(view); //动画效果参数直接定义
Animation animation = new AlphaAnimation(0.1f, 1.0f);
animation.setDuration(5000);
view.setAnimation(animation); animation.setAnimationListener( new AnimationListener() { @Override
public void onAnimationStart(Animation animation) {
} @Override
public void onAnimationRepeat(Animation animation) {
} @Override
public void onAnimationEnd(Animation animation) {
goMain();
}
}); } private void goMain(){
Intent intent = new Intent(SplashActivity.this, MainActivity.class );
this.startActivity(intent);
this.finish();
};
}
4.使用CountDownTimer http://www.cnblogs.com/over140/archive/2011/12/20/2294220.html
定时执行在一段时候后停止的倒计时,在倒计时执行过程中会在固定间隔时间得到通知(译者:触发onTick方法)
new CountDownTimer(3000 ,1000){ @Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
System.out.println("-------onFinish---------");
} @Override
public void onFinish() {
// TODO Auto-generated method stub
System.out.println("-------onFinish---------");
} }.start();