2012-01-08 24 views
4

アプリでSplashScreenを実装したいと思います。アプリの立ち上げ時に画像ビューでレイアウトを表示し、その後、アンドロイド:noHistory = "true"属性をマニフェストに追加するアクティビティを起動することが最も簡単で最も簡単な方法でした。 ここで、一定時間後にMainActivityクラスを起動するためのスプラッシュスクリーンアクティビティを設定するにはどうすればよいですか? 2秒と言うことができますか?一定時間後にアクティビティを開きますか?

これは

public class SplashActivity extends Activity { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splashscreen); 
} 
} 
+0

フラグなし履歴の使用についての警告 - 他のアクティビティが起動されると、いつでもシステムはアクティビティを終了します。これは、アプリケーションコードの制御からかなり外れています。したがって、no_historyアクティビティの破棄機能で何も解放しないでください。これは予期せぬ例外をデバッグすることにつながります – png

答えて

4

使用

handler.postDelayed(runnable, delayinmilliseconds(2000 in your case)); 

final Runnable runnable = new Runnable() 
{ 
    public void run() 
    { 
     //start the new activity here. 
    } 
}; 
+0

私のコードとあなたのコードをマージできますか?私は試してみるたびにエラーが出ます。まだnoob、申し訳ありません! – borislemke

+0

はクラス内のハンドラを宣言するだけです。 setContentViewの後にonCreate()メソッドで与えたコードを使用してください。 –

+0

ああ、ありがとう!作品! – borislemke

3

はここで完全なサンプルである私のスプラッシュスクリーンの活動です。

package com.test.splash; 

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.view.View; 
import android.widget.ImageView; 

public class splash extends Activity { 

    private static final int STOPSPLASH = 0; 
    //time in milliseconds 
    private static final long SPLASHTIME = 3000;a 

    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); 
      splash = (ImageView) findViewById(R.id.splashscreen); 
      Message msg = new Message(); 
      msg.what = STOPSPLASH; 
      splashHandler.sendMessageDelayed(msg, SPLASHTIME); 
    } 
} 
+0

これも機能しました!ありがとう! – borislemke

0

また、この方法でjava.util.Timerを使用することができます。

new Timer().schedule(new TimerTask(){ 
    public void run() { 
     startActivity(new Intent(SplashActivity.this, MainActivity.class)); 
    } 
}, 2000 /*amount of time in milliseconds before execution*/); 
1
public class TrackMyMoneyActivity extends Activity { 
//member fields 
private ProgressBar pbar = null; 
private TextView counter_txt = null; 
Thread splash_thread = null; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    pbar = (ProgressBar) findViewById(R.id.splashpbar); 
    counter_txt = (TextView) findViewById(R.id.countertxt); 
    //define thread 
    splash_thread = new Thread(new Runnable() { 

     @Override 
     public void run() { 
      // TODO Auto-generated method stub 
      int i = 0; 
       for(i=0;i<100;i++){ 

        pbar.setProgress(i); 

       // counter_txt.setText(i+" %"); 
        try { 
        splash_thread.sleep(100); 
       } catch (InterruptedException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
       } 
       if(i==100){ 
        Intent intent = new Intent(getBaseContext(), LoginApp.class); 
        startActivity(intent); 
       } 
     } 
    }); 
    splash_thread.start(); 

} 
@Override 
protected void onDestroy() { 
    // TODO Auto-generated method stub 
    super.onDestroy(); 


} 

}

私はそれはあなたのソリューションを解決することを願っています。

0
public class Splashscreen extends Activity 
    { 
    private static final int SPLASH_TIME = 10 * 1000;// 3 seconds 


    Button logo; 
    @Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
// requestWindowFeature(Window.FEATURE_NO_TITLE); 
requestWindowFeature(Window.FEATURE_NO_TITLE); 
setContentView(R.layout.splashscreen); 
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
    try { 
    new Handler().postDelayed(new Runnable() { 

     public void run() { 

      Intent intent = new  Intent(Splashscreen.this,MainActivity.class); 
      startActivity(intent); 

      Splashscreen.this.finish(); 

      //overridePendingTransition(R.anim.fade_in, R.anim.fade_out); 

     } 


    }, SPLASH_TIME); 

    new Handler().postDelayed(new Runnable() { 
      public void run() { 
       } 
      }, SPLASH_TIME); 
    } catch(Exception e){} 
// METHOD 1  

/****** Create Thread that will sleep for 5 seconds *************/   
Thread background = new Thread() { 
    public void run() { 

     try { 
      // Thread will sleep for 5 seconds 
      sleep(50*1000); 

      // After 5 seconds redirect to another intent 
      Intent i=new Intent(getBaseContext(),MainActivity.class); 
      startActivity(i); 

      //Remove activity 
      finish(); 

     } catch (Exception e) { 

     } 
     } 
    }; 


    background.start(); 



     } 
関連する問題