У меня есть несколько видов внутри FrameLayout. Я написал переход, в котором к каждому представлению применяется пользовательский класс Animation. Во время этого перехода мне нужно вывести вид внизу 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.