2016-03-03 118 views
0

我正在利用LinearLayout的自動(內置)動畫,將animateLayoutChanges添加到XML中。如何判斷animateLayoutChanges何時完成?

這很好地工作。

然而,當我在Animation.AnimationListener附加到的LinearLayout它永遠不會觸發。所以,我很困惑我應該附加什麼樣的聽衆,也許我應該附加它,以便找出給定的過渡動畫何時完成。

所以..我有什麼是這樣的:

 LinearLayout productsList = (LinearLayout)findViewById(R.id.pList); 

     productsList.setLayoutAnimationListener(new Animation.AnimationListener() { 
     @Override 
     public void onAnimationStart(Animation animation) { 
      Log.d(TAG, "animation started"); 
     } 

     @Override 
     public void onAnimationEnd(Animation animation) { 
      Log.d(TAG, "animation ended"); 
     } 

     @Override 
     public void onAnimationRepeat(Animation animation) { 
      Log.d(TAG, "animation repeated"); 
     } 
    }); 

播放動畫時,如預期,但沒有我的日誌都沒有寫過。

我必須以我自己的自定義動畫添加到佈局對於這個工作,還是我失去了一些東西明顯?

回答

1

試試這個:

productsList.getLayoutTransition().addTransitionListener(new LayoutTransition.TransitionListener() { 
    @Override 
    public void startTransition(LayoutTransition transition, ViewGroup container, View view, int transitionType) { 

    } 

    @Override 
    public void endTransition(LayoutTransition transition, ViewGroup container, View view, int transitionType) { 

    } 
}); 
+0

引人入勝。這絕對是朝正確方向邁出的一步,但我注意到endTransition被多次觸發(看起來與父級佈局中的項目數量有關),但我對韻律或原因並不清楚。你真的知道我怎麼知道它是在什麼時候完成的嗎? –

+0

嘗試檢查transitionType值。這是一個文檔:http://developer.android.com/intl/ru/reference/android/animation/LayoutTransition.html –

+0

我檢查了這一點。每個startTransition都與endTransition配對。您可以增加/減少計數器以檢測上次轉換結束。 –

相關問題