2016-07-14 82 views
2

我使用一個簡單的幻燈片左側,當我執行FragmentTransaction時滑動右側自定義動畫。我的問題是,我正在使用事務動畫加載的片段包含onResume()中的代碼,以進行HTTP調用,導致我的「請稍候」進度對話框顯示。它可以工作,但我希望將代碼從onResume移動到片段中的另一個方法,該方法在片段完全加載之前不會觸發。換句話說,當動畫完成並且完全插入到位時。片段 - 等到事務動畫完成

我用這個來開始新的片段

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()的方法來初始化後的動畫100%完成

這可能嗎?

+0

@Tony - 正準備接受您的回答並將其刪除 – Phil

+0

片段動畫的最佳解釋可以在這裏找到(http://stackoverflow.com/a/20480676/1972597)。但是,我會建議從我的答案中解決您的特定問題的第二種方法,因爲這會是更好的用戶體驗。 – Tony

回答

0

有兩種方法可以在這裏,

  1. 在幻燈片上的動畫實現的AnimationListener。

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

在收聽者onAnimationEnd(),呼叫在該片段中的方法,使HTTP調用。

  1. 上述方法浪費時間只是爲了動畫。因此,而不是有一個進度對話框,在你的片段內實現一個圓形的進度條。這樣你的動畫和http調用就可以同時發生。一旦獲得響應,請移除進度微調器並顯示實際的片段視圖。
+2

我正在使用基於XML的動畫,我將如何添加一個動畫偵聽器? – Phil

+0

@Phil你找到了解決問題的方法嗎? – ymerdrengene