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

问题描述 投票:1回答:3

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

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);

            }
        });

但是,在关闭弹出窗口并且在关闭弹出窗口之前未调用setOnDismissListener之前,这不会为弹出窗口内的imageview设置动画。在关闭弹出窗口之前,你能否建议我做一个动作?提前致谢。

android popupwindow
3个回答
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)创建两组不同的动画。

比方说,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和Exit并提供所需的动画。


0
投票

关闭弹出窗口之前的任何动作?

您可以扩展PopupWindow并覆盖dismiss方法。然后你可以在超级之前调用dismiss动画。

public class SomeClass extends PopupWindow {

    @Override
    public void dismiss() {

        //TODO: animation here

        super.dismiss();
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.