次の図のように、このアニメーションをどのように達成できますか? キャンセル ボタンを押したときに Linearlayout B でアニメーションを表示しようとしたため、linearlayout B は左から右にスライドしますが、LinearLayout B が完全になくなると、LinearLayout C は LinearLayout A の下にゆっくりとスライドするのではなく、直接下に移動しますLinearLayout A.助けてください...
質問する
1772 次
2 に答える
2
線形レイアウトに設定android:animateLayoutChanges="true"
すると、これが自動的に実現されます。
于 2013-05-28T08:39:17.640 に答える
0
最初に ViewTreeObserver.OnPreDraw リスナーをビュー C に追加します。
int bHeight = viewB.getHeight();
viewC.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
public boolean onPreDraw() {
viewC.startAnimation(new TranslateAnimation(0, 0, bHeight, 0));
viewC.getViewTreeObserver().removeOnPreDrawListener(this);
return false;
}
});
次に、B の可視性を無に設定します。
viewB.setVisibility(View.GONE);
これにより、ビュー B が非表示になり、ビュー C が上に移動します。ただし、C を新しい位置に描画する前に、以前の位置から現在の位置にアニメーション化します。
于 2013-05-28T08:39:48.047 に答える