我正在使用LayoutTransition
自定义ObjectAnimator
个对象来动画添加和删除LinearLayout
内的视图(本身位于HorizontalScrollView
内)。新视图添加到先前视图的右侧。动画的唯一属性是translationX
。
我希望新添加的View
从前面的View
下滑出(从左到右动画)。并且,我希望新移除的View
能够在之前的View
下滑动(从右到左动画)。
我覆盖了getChildDrawingOrder以返回反向z排序,如下所示:
@Override
protected int getChildDrawingOrder( int childCount, int i ) {
return childCount - 1 - i;
}
这适用于添加视图时出现的动画。删除视图时,它不起作用。在removeView()
之前调用getChildDrawingOrder()
; ViewGroup
(或者,在我的情况下,LinearLayout
)在确定z顺序时不再知道新删除的View
。结果是删除的View
在其他视图之上设置了动画。
bringToFront()
和bringChildToFront()
似乎对我没有任何作用。
我知道我可以简单地翻译我希望删除的View
,然后调用removeView()
。但这违背了使用LayoutTransitions的目的。
我还能尝试什么,以确保删除View
仍然保持我想要的z顺序?