我在 FrameLayout 中有几个视图。我写了一个过渡,每个视图都应用了一个自定义动画类。在此过渡期间,我需要将 z 顺序底部的视图置于前面。我这样做:
public static void putBackAtFront(ViewGroup v)
{
v.getChildAt(0).bringToFront();
refreshEverything(v);
}
这从我的自定义动画的 applyTransformation() 中调用。
IE
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() 在父 FrameLayout 及其所有子级上调用 invalidate() 和 requestLayout()。
一切正常,除了当调用 putBackAtFront() 时,现在位于底部的视图会消失一帧,然后立即重新出现,从而导致明显的闪烁。我也试过不调用 refreshEverything(),它没有区别。
我的目标是 API Level 7。