我希望在解除它之前为弹出窗口内的视图设置动画。所以我已经在下面的解雇监听器中为视图设置了动画,
penPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
TranslateAnimation animateSlideUp = new TranslateAnimation(0,0,0, mImageViewLike.getHeight());
animateSlideUp.setDuration(200);
animateSlideUp.setFillAfter(true);
mImageViewLike.startAnimation(animateSlideUp);
mImageViewLike.setVisibility(View.VISIBLE);
}
}, 200);
}
});
但是在关闭弹出窗口之前,这不会为弹出窗口内的imageview设置动画,并且在关闭弹出窗口之前没有调用setOnDismissListener。在关闭弹出窗口之前,你能否建议我做一个动作?提前谢谢。
答案 0 :(得分:2)
如果你开始动画on popup dismiss
那么你在哪里做动画?
你应该以相反的方式做到这一点。
开始animation
,然后animation end
,然后dismiss
dialog.
TranslateAnimation animateSlideUp = new TranslateAnimation(0,0,0, mImageViewLike.getHeight());
animateSlideUp.setDuration(200);
animateSlideUp.setFillAfter(true);
mImageViewLike.startAnimation(animateSlideUp);
animateSlideUp.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
penPopupWindow.dismiss();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
答案 1 :(得分:1)
这是你应该怎么做的,
1)创建两组不同的动画。
说,popup_show.xml
和popup_hide.xml
并将其添加到您必须在res文件夹中创建的动画文件夹中。
2)现在里面的值文件夹创建了一个名为styles.xml
的xml,并像这样添加这些动画,
<style name="Animation">
<item name="android:windowEnterAnimation">@anim/popup_show</item>
<item name="android:windowExitAnimation">@anim/popup_hide</item>
</style>
3)现在将此样式设置为PopupWindow动画
popup.setAnimationStyle(R.style.Animation);
现在它会自动检测Window Enter and Exit并提供所需的动画。
答案 2 :(得分:0)
在关闭弹出窗口之前有什么动作吗?
您可以扩展PopupWindow并覆盖dismiss方法。然后您可以在超级动画之前调用关闭动画。
public class SomeClass extends PopupWindow {
@Override
public void dismiss() {
//TODO: animation here
super.dismiss();
}
}