2016-07-14 12 views
2

私はFragmentTransactionを実行すると、単純なスライド左、スライド右のカスタムアニメーションを使用しています。私の問題は、トランザクションアニメーションをロードしているフラグメントに、onResume()のコードが含まれているため、「待ってください」という進行状況ダイアログが表示されます。それは動作しますが、コードをonResumeからフラグメント内の別のメソッドに移動して、フラグメントが完全にロードされるまでは起動しません。言い換えれば、アニメーションが完了し、完全にスライドされたとき。私はアニメーションが フラグメント - トランザクションのアニメーションが完了するまで待ちます

100%完了した後に初期化するために)

FragmentManager manager = getSupportFragmentManager(); 
FragmentTransaction ft = manager.beginTransaction(); 
ft.setCustomAnimation(R.anim.slide_in_right, R.anim.slide_out_left); 
ft.replace(R.id.realtabcontent, new MyFragment()); 
ft.commit(); 

新しいフラグメントを開始し、私は(MyNewFragmentでメソッドをしたいためにこれを使用

が可能ということですか?

+0

@Tony - あなたの答えを正しく受け入れようとしていて、それを削除しました – Phil

+0

フラグメントアニメーションの最も良い説明は、こちら(http://stackoverflow.com/a/20480676/1972597)です。しかし、より良いユーザーエクスペリエンスであるため、私はあなたの特定の問題について私の答えから2番目のアプローチをお勧めします。 – Tony

答えて

0

可能二つのアプローチがここにありますが、

  1. は、スライドインアニメーションのAnimationListenerを実装します。 onAnimationEndで

    animation.setAnimationListener(new Animation.AnimationListener() { 
          @Override 
          public void onAnimationStart(Animation animation) { 
    
          } 
    
          @Override 
          public void onAnimationEnd(Animation animation) { 
    
          } 
    
          @Override 
          public void onAnimationRepeat(Animation animation) { 
    
          } 
         }); 
    

()リスナーの、HTTPコールを行うために断片でメソッドを呼び出します。

  1. 上記のアプローチは、アニメーションのために時間を無駄にします。したがって、進捗ダイアログを表示する代わりに、フラグメント内に円形の進行状況バーを実装します。こうすることで、アニメーションとhttpコールが同時に発生する可能性があります。応答を取得したら、進行スピナーを削除し、実際のフラグメントビューを表示します。
+2

私はXMLベースのアニメーションを使用していますが、アニメーションリスナーを追加するにはどうすればいいですか? – Phil

+0

@Philあなたの問題解決のための解決策を見つけましたか? – ymerdrengene

関連する問題