2012-12-22 241 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。 –