其他分享
首页 > 其他分享> > android – 下一个和上一个动画

android – 下一个和上一个动画

作者:互联网

当用户选择列表中的项目时,我弹出了PopupWindow.然后当他在弹出窗口中左右滑动时,数据(在弹出窗口中)分别变为列表中的上一个和下一个项目.

我已经做到这一点,当用户向右滑动手指(“下一步”动作)时,当左边的当前窗口从屏幕右侧熄灭时,它看起来像是从左侧滑入的新弹出窗口.反之亦然“上一步”动议.

但问题是,因为我为两个动画制作了两种风格(左到中间,中间到右边,右到中间,中间到左边),而且PopupWindows没有更新显示,当用户向右滑动(“下一步”)然后向左滑动(“上一步”)时,动画看起来不稳定,因为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与上述动画相反.

我已经提供了我的第一次尝试代码.此处,更改的动画在显示另一个弹出窗口后生效.

解决方法:

如果在应用程序标记下的清单中使用android:hardwareAccelerated =“true”,则所有动画都会显得更清晰.即使是常规的幻灯片左/右动画也不会出现硬件加速.

标签:android,animation,popupwindow,gestures
来源: https://codeday.me/bug/20190629/1328346.html