在removeView之后管理ViewGroup的LayoutTransition的z顺序

时间:2014-01-11 00:47:00

标签: android android-layout android-animation

我正在使用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顺序?

0 个答案:

没有答案