2012-12-22 160 views
2

我有一个启动画面,它在消失前显示2-3秒。 我想在加载下一个活动时添加淡入效果。我在Facebook黑客示例中看到一个示例,我正在使用它。 它使用完成();从DashboardActivity中结束该活动,如果有人点击后它不返回到SplashAcitivty。但是使用这个不会创建淡入效果,如API演示示例中所示。Android活动启动画面

public class SplashActivity extends Activity { 
    private long splashDelay = 3000; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 

     // Remove title bar 
     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 

     // Remove notification bar 
     /* 
     * this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
     * WindowManager.LayoutParams.FLAG_FULLSCREEN); 
     */ 

     setContentView(R.layout.activity_splash); 

     TimerTask task = new TimerTask() { 

      @Override 
      public void run() { 
       finish(); 
       startActivity(new Intent().setClass(SplashActivity.this, 
         MainActivity.class)); 
       overridePendingTransition(R.anim.fade, R.anim.hold); 
      } 
     }; 

     Timer timer = new Timer(); 
     timer.schedule(task, splashDelay); 

    } 

} 

回答

6

使用一个处理程序是:

new Handler().postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     startActivity(new Intent(SplashActivity.this, 
       MainActivity.class)); 
     overridePendingTransition(R.anim.fade, R.anim.hold); 
     finish(); 
    } 
}, splashDelay); 
+0

真棒:d非常感谢:d你能解释一下这是如何工作。它是否运行后台线程? –

+1

'TimerTask'在后台线程上运行。 'Handler'在UI线程上执行'Runnable',这是你需要的,因为你想更新UI。 –