Android:アニメーション完了後に位置が初期位置に戻る問題を解決

765 ワード

今日TranslateAnimationを使用してLinearLayoutをシフトすると、アニメーションが完了すると自動的に初期の状態に戻り、fillAfterを設定してもあまり役に立たないことがわかりました.
よく考えてみると、
 
この現象は正常で、TranslateAnimationはシフトアニメーションの効果を実現するだけで、Linearlayoutの位置を本当に変えることはできないので、AnimationListenerを追加する必要があります.アニメーションが終了した後(onAnimationEnd())、LayoutParamの関連属性を設定することでLinearlayoutの位置を変更する必要があります.
 
@Override
protected void onAnimationEnd() {
    super.onAnimationEnd();
    FrameLayout.LayoutParams ll = new FrameLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.FILL_PARENT);
    ll.setMargins(-50, 0, 0, 0);
    main_layout.setLayoutParams(ll);
 }

 
オリジナルの投稿、転送は出典を明記してください:http://thierry-xing.iteye.com/blog/1400217