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();
}
});