2012-04-29 77 views
0

我有下面的代碼,它創建一個啓動畫面。當我開始我的程序,我不認爲閃屏,而不是我直接的第一個活動,請參閱:爲什麼我無法查看啓動畫面?

public class splash extends Activity { 
private static final int STOPSPLASH = 0; 
//time in milliseconds 
private static final long SPLASHTIME = 13000; 
private ImageView splash; 
//handler for splash screen 
private Handler splashHandler = new Handler() { 
/* (non-Javadoc) 
* @see android.os.Handler#handleMessage(android.os.Message) 
*/ 
@Override 
public void handleMessage(Message msg) { 
switch (msg.what) { 
case STOPSPLASH: 
//remove SplashScreen from view 
splash.setVisibility(View.GONE); 
break; 
} 
super.handleMessage(msg); 
} 
}; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle icicle) { 
super.onCreate(icicle); 
setContentView(R.layout.main);   
Intent intent = new Intent(this, prima.class); 
splash = (ImageView) findViewById(R.id.imageView1); 
Message msg = new Message(); 
msg.what = STOPSPLASH;  
splashHandler.sendMessageDelayed(msg, SPLASHTIME);   
startActivity(intent); 
} 
} 

回答

1

你必須從你的處理器做startActivity()。如果你直接做,你會直接切換到下一個活動。

public class splash extends Activity { 
    private static final int STOPSPLASH = 0; 
    // time in milliseconds 
    private static final long SPLASHTIME = 13000; 
    private Intent nextActivity; 

    // handler for splash screen 
    private Handler splashHandler = new Handler() { 
     @Override 
     public void handleMessage(Message msg) { 
      switch (msg.what) { 
       case STOPSPLASH: 
        // start next Activity 
        startActivity(nextActivity); 
        break; 
      } 
     } 
    }; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle icicle) { 
     super.onCreate(icicle); 
     setContentView(R.layout.main); 
     nextActivity = new Intent(this, prima.class); 
     splashHandler.sendEmptyMessageDelayed(STOPSPLASH, SPLASHTIME); 
    } 
} 
相關問題