如何在解除android中的弹出窗口之前为popupwindow中的视图设置动画?

时间:2016-07-27 12:27:00

标签: android popupwindow

我希望在解除它之前为弹出窗口内的视图设置动画。所以我已经在下面的解雇监听器中为视图设置了动画,

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。在关闭弹出窗口之前,你能否建议我做一个动作?提前谢谢。

3 个答案:

答案 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.xmlpopup_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();
    }
}