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() は、親の FrameLayout とそのすべての子に対して、invalidate() と requestLayout() を呼び出します。
putBackAtFront() が呼び出されると、現在下部にある View が 1 フレームだけ消えてからすぐに再表示され、ちらつきが目立つことを除いて、すべてが完全に機能します。refreshEverything() を呼び出さずに試してみましたが、違いはありません。
API レベル 7 をターゲットにしています。