PopupWindow
ユーザーがリスト内のアイテムを選択したときにポップアップするを作成しました。次に、ポップアップウィンドウを左右にスワイプすると、(ポップアップ内の)データがリスト内の前の項目と次の項目にそれぞれ変更されます。
そして、ユーザーが指を右にスライドすると、現在のポップアップウィンドウが画面の右から消えるように、新しいポップアップウィンドウが左からスライドしているように見えるようにしました(「次へ」の動き)。「前の」モーションの場合はその逆です。
しかし、問題は、2つのアニメーションに対して2つのスタイルを作成したため(左から中へは中から右、右から中へは中から左)、PopupWindow
sは更新されないためです。が表示されている場合、ユーザーが右(「次へ」)にスワイプしてから左(「前へ」)にスワイプすると、2つのアニメーションが重なるため、アニメーションが途切れ途切れに見えます。スワイプを再び逆にしたときにも同じことが起こります。
さて、update()
アニメーションを変更した後に呼び出すと、再び中央にスライドします。それはさらに悪いことです。それで、私が望む行動を達成するために私ができることはありますか?
ありがとう。
編集:ソースコード
これが私が初めてポップアップを表示するために使用したコードです:
popup1 = new PopupWindow(popupLayout, popup_width, popup_height, true);
popup1.setAnimationStyle(R.style.AnimationPopup);
popup1.showAtLocation(this.findViewById(R.id.main_container), Gravity.CENTER, 0, 0);
そして、これはnext()
メソッドのコードです:
if(popup2 != null) popup1 = popup2;
if(popup1 != null) {
popup2 = new PopupWindow(popupLayout, popup_width, popup_height, true);
popup2.setAnimationStyle(R.style.AnimationPopup);
popup1.dismiss();
popup2.showAtLocation(rootLayout, Gravity.CENTER, 0, 0);
}
そして、これはprev()
メソッドのコードです:
if(popup2 != null) popup1 = popup2;
if(popup1 != null) {
popup2 = new PopupWindow(popupLayout, popup_width, popup_height, true);
popup2.setAnimationStyle(R.style.AnimationPopupReverse);
popup1.setAnimationStyle(R.style.AnimationPopupReverse);
popup1.dismiss();
popup2.showAtLocation(rootLayout, Gravity.CENTER, 0, 0);
}
Javaコードは以上です。これは、右から中央へのスライドの単純な表示と、中央から左へのスライドのアニメーションの非表示AnimationPopup
を備えたXMLです。そして、これは上記のアニメーションの逆です。AnimationPopupReverse
私はコードの最初の試みを提供しました。ここで、変更されたアニメーションは、もう1つのポップアップが表示された後に有効になります。