0

次の図のように、このアニメーションをどのように達成できますか? キャンセル ボタンを押したときに Linearlayout B でアニメーションを表示しようとしたため、linearlayout B は左から右にスライドしますが、LinearLayout B が完全になくなると、LinearLayout C は LinearLayout A の下にゆっくりとスライドするのではなく、直接下に移動しますLinearLayout A.助けてください...

スライドアニメーション

4

2 に答える 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 に答える