Gestión del orden z de ViewGroup para LayoutTransition, después de removeView

Estoy utilizando una LayoutTransition con objetos personalizados de ObjectAnimator para animar la adición y la eliminación de vistas dentro de un LinearLayout (sí mismo dentro de un HorizontalScrollView ). Se agregan nuevas vistas a la derecha de las vistas anteriores. La única propiedad que se está animando es translationX .

Me gustaría que una View recién agregada saliera de debajo de la View directamente anterior (animando de izquierda a derecha). Y, me gustaría que una View recién eliminada retrocediera en la View anterior (animación de derecha a izquierda).

Anulé getChildDrawingOrder para devolver el orden z inverso, así:

 @Override protected int getChildDrawingOrder( int childCount, int i ) { return childCount - 1 - i; } 

Esto funciona muy bien para la animación que se produce al agregar vistas. No funciona cuando se eliminan las vistas. removeView() se llama antes de getChildDrawingOrder() ; el ViewGroup (o, en mi caso, LinearLayout ) ya no sabe acerca de la vista recién eliminada en el momento en que llega a calcular la orden z. El resultado es que la View eliminada se anima en la parte superior de las otras vistas.

bringToFront() y bringChildToFront() parecen no hacer nada por mí.

Sé que puedo simplemente traducir la View que deseo eliminar, y luego llamar a removeView() . Pero esto derrota el propósito de usar LayoutTransitions.

¿Qué más puedo intentar, para asegurarme de que la eliminación de una View todavía mantiene el orden z que deseo?

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.