2012-01-08 6 views
4

내 앱에서 SplashScreen을 구현하고 싶습니다. 가장 쉽고 쉬운 방법은 앱 실행시 이미지보기가있는 레이아웃을 표시 한 다음 android : noHistory = "true"속성을 매니페스트에 추가하는 것입니다. 이제는 일정 시간 후에 MainActivity 클래스를 시작하기위한 스플래시 화면 활동을 어떻게 설정합니까? 2 초가 될까요?일정 시간이 지나면 활동을여시겠습니까?

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

플래그가없는 기록 사용에 대한 경고 - 다른 활동이 실행 된 후에는 언제든지 systen이 활동을 종료합니다. 이것은 응용 프로그램 코드를 완전히 제어하지 못합니다. 따라서 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

내 코드를 병합 할 수 있습니까? 시도 할 때마다 오류가 발생합니다. 아직도 멍청한 놈. 미안해! – borislemke

+0

그냥 클래스에서 처리기를 선언하십시오. 및 setContentView 후 onCreate() 메서드에서 주어진 코드를 사용하십시오. –

+0

Ahh, thanks! 공장! – borislemke

3

완전한 샘플 내되는 SplashScreen 활동이다.

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



     } 
관련 문제