У меня есть несколько представлений внутри FrameLayout. Я написал переход, в котором к каждому представлению применяется собственный класс анимации. Во время этого перехода мне нужно вывести представление в нижней части z-порядка на передний план. Я делаю это с помощью:
public static void putBackAtFront(ViewGroup v)
{
v.getChildAt(0).bringToFront();
refreshEverything(v);
}
Это вызывается из applyTransformation() моей пользовательской анимации.
т. е.
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() вызывает invalidate() и requestLayout() для родительского FrameLayout и всех его дочерних элементов.
Все работает отлично, за исключением того, что при вызове putBackAtFront() представление, которое сейчас находится внизу, исчезает на один кадр, а затем мгновенно появляется снова, что приводит к заметному мерцанию. Я также пробовал без вызова refreshEverything(), это не имеет значения.
Я ориентируюсь на уровень API 7.