Jar*_*ith 6 android view viewgroup
我在FrameLayout中有几个视图.我已经编写了一个转换,其中每个视图都应用了自定义动画类.在此过渡期间,我需要将z顺序底部的视图置于前面.我这样做:
public static void putBackAtFront(ViewGroup v)
{
v.getChildAt(0).bringToFront();
refreshEverything(v);
}
Run Code Online (Sandbox Code Playgroud)
这是从我的自定义动画的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);
}
...
}
...
}
Run Code Online (Sandbox Code Playgroud)
refreshEverything()调用父FrameLayout及其所有子节点上的invalidate()和requestLayout().
除了在调用putBackAtFront()时,一切都工作正常,现在位于底部的视图在立即重新出现之前消失为单帧,导致明显的闪烁.我也试过没有调用refreshEverything(),它没有任何区别.
我的目标是API级别7.
applyTransformation() 在动画过程中被多次调用,因此您应该根据 interpolatedTime 执行动画,当其为 1.0 时,动画已结束,因此您应该在这里调用您的 Bring to Front 。
因此,在我看来,当在对您的方法的某些调用中, getChildAt(0) 获得与您想要的视图不同的视图并且出现闪烁时,就会发生这种闪烁。