2016-03-30 13 views
1

私は2つの異なるシーン(activity_test_pre.xmlとactivity_test.xml)のxmlを定義しました。これはシーンをロードし、最初のものを入力し、最後にもう一方のシーンへの遷移を行うコードです:oncreateメソッドのAndroidの遷移

ViewGroup rootContainer = (ViewGroup) findViewById(R.id.base); 

    //first scene 
    ViewGroup startViews = (ViewGroup)getLayoutInflater() 
      .inflate(R.layout.activity_test_pre, rootContainer, false); 

    //second scene 
    ViewGroup endViews = (ViewGroup)getLayoutInflater() 
      .inflate(R.layout.activity_test, rootContainer, false); 

    scene1 = new Scene(rootContainer, startViews); 
    scene2 = new Scene(rootContainer, endViews); 

    //create transition, set properties 
    transition = new ChangeBounds(); 
    transition.setDuration(3000); 
    transition.setInterpolator(new BounceInterpolator()); 


    scene1.enter(); 
    TransitionManager.go(scene2); 

問題は、このコードはアクティビティのoncreateメソッドにあります。このようにして、アプリケーションはトランジションなしで2番目のシーンをまっすぐに表示します。

最後の行を入力した場合: TransitionManager.go(scene2); ボタンのonclickイベントでは、遷移が正しく表示されます。私はこの動作が欲しいですが、私は、アクティビティがロードされたときに、ユーザーのやりとりなしにそれを必要とします。

+0

試しに同じことを行うようにしてください。 – Omkar

+0

私は試しました。うまくいきません – takluiper

答えて

1

は() `ちょうど宣言の後に` rootContainer.removeAllViewsを追加onWindowFocusChanged()

@Override 
public void onWindowFocusChanged(boolean hasFocus) { 
    if(hasFocus){ 
     ViewGroup rootContainer = (ViewGroup) findViewById(R.id.base); 

     //first scene 
     ViewGroup startViews = (ViewGroup)getLayoutInflater() 
       .inflate(R.layout.activity_test_pre, rootContainer, false); 

     //second scene 
     ViewGroup endViews = (ViewGroup)getLayoutInflater() 
       .inflate(R.layout.activity_test, rootContainer, false); 

     scene1 = new Scene(rootContainer, startViews); 
     scene2 = new Scene(rootContainer, endViews); 

     //create transition, set properties 
     transition = new ChangeBounds(); 
     transition.setDuration(3000); 
     transition.setInterpolator(new BounceInterpolator()); 


     scene1.enter(); 
     TransitionManager.go(scene2); 
    } 
} 
+0

私もこれを試しました。うまくいかなかった – takluiper