Tengo varias vistas dentro de un FrameLayout. Hay una transición que he escrito donde cada vista tiene una clase de animación personalizada aplicada. Durante esta transición, necesito llevar la Vista en la parte inferior del orden Z al frente. Hago esto con:Android View.bringToFront() causa parpadeo
public static void putBackAtFront(ViewGroup v)
{
v.getChildAt(0).bringToFront();
refreshEverything(v);
}
Esto se llama desde el applyTransformation() de mi Animación personalizada.
decir
public class PivotAnimation extends Animation {
private View view;
...
@Override
protected void applyTransformation(float interpolatedTime, Transformation t)
{
...
if(interpolatedTime >= 1.f && isAtBack(view))
{
putBackAtFront(view);
}
...
}
...
}
refreshEverything (llamadas) invalidan() y requestLayout() en la matriz FrameLayout y todos sus hijos.
Todo funciona a la perfección, excepto que cuando se invoca putBackAtFront(), la vista que ahora está en la parte inferior desaparece para un solo fotograma antes de volver a aparecer instantáneamente, lo que produce un parpadeo notable. También lo intenté sin llamar a refreshEverything(), no hace ninguna diferencia.
estoy focalización API Nivel 7.
Lo siento, he actualizado mi pregunta para aclarar. Ya estoy haciendo lo que dices; putBackAtFront() solo se llama una vez al final de la transición, no siempre. –