我有一个FrameLayout内的几个视图。我写了一个转换,其中每个视图都有一个自定义的Animation类应用。在这个转换过程中,我需要将视图底部的z顺序放在前面。我这样做:Android View.bringToFront()导致闪烁
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()调用无效()和requestLayout()对父的FrameLayout和它的所有儿童。
除了在调用putBackAtFront()时,现在最底层的视图在瞬间重新出现之前就消失了一帧,导致明显的闪烁,所有东西都完美运行。我也尝试不调用refreshEverything(),它没有任何区别。
我针对API级别7
对不起,我已更新我的问题以澄清。我已经按你说的去做了; putBackAtFront()只在转换结束时被调用一次,而不是每次都调用。 – 2012-04-03 03:08:04