2012-08-30 3 views
0

현재 스플래시 화면에서 주 메뉴 화면으로 전환해야하는 응용 프로그램에서 작업하고 있습니다. 코딩을했는데 그렇게하지 않는 것 같습니다. 누구든지 아래의 코드가 잘못된 점을 알아낼 수 있습니까?스플래시 화면이 내 주 메뉴 화면으로 전환되지 않습니다.

시작 화면 활동 :

public class MainActivity extends Activity { 

public static final String GAME_PREFERENCES = "GamePrefs"; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.splash); 

    // fade in animation 
    TextView logo1 = (TextView)findViewById(R.id.TextViewTopTitle); 
    Animation fade1 = AnimationUtils.loadAnimation(this, R.anim.fade_in); 
    logo1.startAnimation(fade1); 

    // custom animation 
    Animation spining = AnimationUtils.loadAnimation(this, R.anim.custom_anim); 
    LayoutAnimationController controller = new LayoutAnimationController(spining); 
    TableLayout table = (TableLayout)findViewById(R.id.TableLayout01); 
    for(int i=0; i < table.getChildCount(); i++) 
    { 
     TableRow row = (TableRow) table.getChildAt(i); 
     row.setLayoutAnimation(controller); 
    } 

    startAnimations(); 

    // saving game preferences 
    SharedPreferences settings = getSharedPreferences(GAME_PREFERENCES, MODE_PRIVATE); 
    SharedPreferences.Editor prefEditor = settings.edit(); 
    prefEditor.putString("UserName", "JaneDoe"); 
    prefEditor.putInt("UserAge", 22); 
    prefEditor.commit(); 
} 

private void startAnimations() { 
    // Transition from Splash screen to Main Menu screen 
    Animation fade2 = AnimationUtils.loadAnimation(this, R.anim.fade_in2); 
    fade2.setAnimationListener(new AnimationListener() { 
     public void onAnimationEnd(Animation animation) 
     { 
      startActivity(new Intent(MainActivity.this,QuizMenuActivity.class)); 
      MainActivity.this.finish(); 
     } 
     public void onAnimationStart(Animation animation) 
     { 
      //Nothing 
     } 
     public void onAnimationRepeat(Animation animation) 
     { 
      //Nothing 
     } 
    }); 
} 

메인 메뉴 활동 :

public class QuizMenuActivity extends Activity { 

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

내 레이아웃은 이미 이루어집니다. 여기에 무엇이 잘못된지에 대한 제안이 있습니까?

답변

1

아마도 AnimationListener가 트리거되지 않았습니까? 그냥 시작 화면을 표시 할 경우 떠날 .. 어떻게 바로 추가 귀하의 스플래쉬 액티비티에서 onCreate에 다음과 같은 시도에 대해 :

그런 다음 5 초 동안 잠 MAINMENU로 이동
Thread timer = new Thread() {   
    public void run() {    
     try {     
      sleep(5000); // Sets delay before splash appears   
     } catch (InterruptedException e) { 
      e.printStackTrace();     
     } finally { 
      Intent main = new Intent(Splash.this, MainMenu.class); 
      startActivity(main);  
      finish(); 
     }  
    }; 
    timer.start(); 

.

편집

나는 당신의 AnimationListener 호출되고 있지 않습니다 생각, 그래서 여기에 fade2.startNow()을 추가하려고 :

private void startAnimations() { 
    // Transition from Splash screen to Main Menu screen 
    Animation fade2 = AnimationUtils.loadAnimation(this, R.anim.fade_in2); 
    fade2.setAnimationListener(new AnimationListener() { 
    public void onAnimationEnd(Animation animation) 
    { 
     startActivity(new Intent(MainActivity.this,QuizMenuActivity.class)); 
     MainActivity.this.finish(); 
    } 
    public void onAnimationStart(Animation animation) 
    { 
     //Nothing 
    } 
    public void onAnimationRepeat(Animation animation) 
    { 
     //Nothing 
    } 
}); 
fade2.startNow(); 
} 

자세한 내용은 사용하는 방법에 Animation.startNow() 또는 Animation.start() :

animation.start() or animation.startNow() does not start the animation immediately

+0

흠, 시도해 볼 수 있습니다. 스플래시 화면의 애니메이션이 끝난 후에 메인 메뉴로 이동하려고했습니다. – Neophile

+0

스플래시 화면에 멈추었을 때 애니메이션이 재생 되었습니까? –

+0

네, 첫 번째 애니메이션이 돌아가서 창 앞쪽으로 들어옵니다. 두 번째 애니메이션이 아닙니다 ... – Neophile

관련 문제