当用户选择列表中的项目时,我制作了一个PopupWindow
弹出窗口。然后当他在弹出窗口上左右滑动时,数据(在弹出窗口中)分别更改为列表中的上一个和下一个项目。
而且我已经做到了,当用户向右滑动手指(“下一个”动作)时,当当前弹出窗口从屏幕右侧退出时,它看起来就像一个新的弹出窗口从左侧滑入。对于“上一个”动议,反之亦然。
但问题是,因为我为这两个动画制作了 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
上面的动画相反。
我已经提供了我的代码的第一次尝试。在这里,更改的动画在显示更多弹出窗口后生效。