当我将视图设置为 View.GONE 和 View.VISIBLE 时,我正在使用布局转换来触发一些动画。
它正在工作,我使用 4 个标志来告诉它动画的视图和时间。这些是:
LayoutTransition.APPEARING - 为设置为可见的视图设置动画。LayoutTransition.CHANGE_APPEARING-当视图设置为可见时,为组中的其他视图设置动画。LayoutTransition.DISAPPEARING - 为设置为消失的视图设置动画。LayoutTransition.CHANGE_DISAPPEARING-当视图设置为消失时,为组中的其他视图设置动画。
这是我设置动画的代码
transition.setAnimator(LayoutTransition.APPEARING, changeOut2);
transition.setAnimator(LayoutTransition.CHANGE_APPEARING, changeOut2);
transition.setAnimator(LayoutTransition.DISAPPEARING, changeOut1);
transition.setAnimator(LayoutTransition.CHANGE_DISAPPEARING, changeOut1);
我的问题是更改标志没有运行动画,但其他标志工作正常。
编辑:添加监听器
布局:三个卡片视图都在同一个线性布局中,并设置了 LayoutTransition。两个正在消失,并且 change_disappearing 应该为仍然在视图中的第三个 cardview 运行。
我添加了一个监听器,如下所示:
transition.addTransitionListener(new LayoutTransition.TransitionListener(){
@Override
public void startTransition(LayoutTransition transition, ViewGroup container, View view, int transitionType) {
switch(transitionType){
case LayoutTransition.APPEARING:
Log.i("anim", "APPEARING: "+view.toString());
break;
case LayoutTransition.DISAPPEARING:
Log.i("anim", "DISAPPEARING: "+view.toString());
break;
case LayoutTransition.CHANGE_APPEARING:
Log.i("anim", "CHANGE_APPEARING: "+view.toString());
break;
case LayoutTransition.CHANGE_DISAPPEARING:
Log.i("anim", "CHANGE_DISAPPEARING: "+view.toString());
break;
}
}
@Override
public void endTransition(LayoutTransition transition, ViewGroup container, View view, int transitionType) {
}
});
我得到了出现和消失的正确日志,但是没有来自任何一个 CHANGE 标志的日志,尽管我最初确实为父级获得了更改日志,所以我设置了以下内容:
transition.setAnimateParentHierarchy(false);
日志目前看起来像:
11-20 16:04:05.195 13612-13612//*PACKAGE*/ I/anim﹕ APPEARING: android.support.v7.widget.CardView{4289d238 V.E...C. ......ID 0,0-1080,512 #7f080057 app:id/home_card}
11-20 16:04:05.195 13612-13612//*PACKAGE*/ I/anim﹕ APPEARING: android.support.v7.widget.CardView{428a3e80 V.E...C. ......ID 0,512-1080,1024 #7f080059 app:id/home_card1}