0

2 つの相対的なレイアウトを含むフレームレイアウトがあり、一方が他方の上にあります。ユーザーがボタンをクリックすると、一番上のボタンが画面から 80% 右に移動します。次に、下部の 1 つがクリック可能になります。これは、それがどのように見えるかです。

                                 FrameLayout
          RelativeLayout (bottom)              RelativeLayout (top)
            FilterWidgets                   Open/close button, ListView

プロパティベースのアニメーションである新しいアニメーションAPIを使用して、3.0+で実現するのは本当に簡単です。3.0 より前の場合、アニメーションはビュー ベースであるため。そのため、onAnimationEnd のレイアウト プロパティを手動で変更することになります。requestLayout を呼び出して永続的にしますが、レイアウトが元の位置に戻ることを確認するためだけです。レイアウトを永久に移動する方法を知っている人はいますか?

全体像を見たい場合は、私の他の投稿を参照して ください。

theTranslationX.addListener(new AnimatorListenerAdapter() {

                    @Override
                    public void onAnimationEnd(Animator nullPointer) {
                        v.clearAnimation();
                        int theL = isMenuOn() ? 0 : v.getLeft() + getFilterWidth();
                        int theR = isMenuOn() ? v.getWidth() : v.getLeft() + getFilterWidth() + v.getWidth();
                        int theHeight = v.getHeight();
                        int theT = 0;
                        v.layout(theL, theT, theR, theHeight);
                        v.requestLayout();
                    }
                });
4

1 に答える 1