2016-03-03 114 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配对。您可以增加/减少计数器以检测上次转换结束。 –

相关问题