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();