2012-03-25 21 views
6

の原因となります。それぞれのビューにカスタムAnimationクラスが適用されている場所に、私が書いた移行があります。この移行中に、zオーダーの一番下のビューを前面に持っていく必要があります。私はこれでこれを行います:アンドロイドView.bringToFrontは()私はでframeLayout内で複数のビューを持っているちらつき

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とそのすべての子に無効化()とrequestLayout()を呼び出します。

putBackAtFront()が呼び出されると、一番下にあるビューがただちに再表示される前に1つのフレームで消え、ちらつきが目立ちます。私はrefreshEverything()を呼び出さずに試してみましたが、違いはありません。

私はあなたがinterpolatedTimeに基づいてアニメーションを行う必要がありますので、その1.0、アニメーションは終わりであるので、あなたときapplyTransformationは()、アニメーション中に複数回呼び出されるAPIレベル7.

答えて

1

をターゲットにしていますあなたの持ち込みをここに伝えるべきです。あなたの方法にこれらの呼び出しの一部では、getChildAt(0)あなたが望むものとは異なるビューを取得し、ちらつきが表示されたら

は、だから私の意見では、このちらつきが起こります。

+0

申し訳ありませんが、私は明確にするために私の質問を更新しました。私はあなたが言うように、すでにやっています。 putBackAtFront()は、毎回ではなく、トランジションの終了時に一度だけ呼び出されます。 –

0

私はそれが3つのいずれかである必要があります考えています:

あなたは3.0+ APIを使用して構築している場合は、ハードウェアアクセラレーションが有効になっていることがあります。これは、4.0ではデフォルトでもオンになっています。レイアウト/ビュー/ウィンドウでHWアクセラレーションを無効にするには、

setLayerType(LAYER_TYPE_SOFTWARE, null); 

を試してみてください。

requestLayout()を呼び出す必要はありません。すべてのビューが相対制約の子である場合、Z-インデックスの変更はそれに関係しません。ほとんど必要とされないことがありますが無効に呼び出す

。あなたはビューがフォーカス可能作るとちょうどのrequestFocus()代わりのBringToFront関数()まったくを呼び出してみましたがありますか? bringToFront()は、親からビューを削除して、それを再度追加します。これが起こっている間、何かが図面を一時停止しているとは思わないので、これは簡単にステップ間の無効化を引き起こす可能性があります。

+0

提案していただきありがとうございます。質問に記載されているように、私はAPI 7(2.1)をターゲットにしているので、HWアクセラレーションは私の選択肢ではありません。 requestFocus()はzオーダーを変更することはありません。また、私はrequestLayout()とinvalidate()を試してみました。いずれにしても、bringToFront()はUI(メイン)スレッドで呼び出されるため、ドキュメントによれば、定義によって描画を「一時停止」する必要があります。ドキュメントが完全なストーリーを伝えていない限り、非同期レンダリングが進行中です。 –

関連する問題