如何在动画结束后仅关闭popupWindow

时间:2017-01-26 18:35:35

标签: android android-layout android-studio android-animation

我知道存在与此问题类似的主题,但我不知道如何使用我的代码来完成这项工作。

我有一个弹出窗口,(我甚至不知道这是否是我想要的最好的方式,但我是Android上的新手),但是我点击了一个带有我在这里找到的动画的图像时出现了一个popupWindow ,在我读了一个关于如何设置弹出窗口动画的问题并且我已经完成了Enter和Exit的动画之后,我想出了如何做到这一点,但现在我的问题:

在Enter Animatio结束后,我不知道如何进行弹出窗口解除。

popupWindow代码:

LayoutInflater inflater =  (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE);
View viewAnimationResourceEarned = inflater.inflate(R.layout.layout_animation_resources_earned, null);

animationResourceEarned = new PopupWindow(viewAnimationResourceEarned, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
animationResourceEarned.setAnimationStyle(R.style.styleAnimationResourceEarned);
animationResourceEarned.showAtLocation(viewAnimationResourceEarned, Gravity.CENTER, 0, 0);

输入动画代码:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:ordering="sequentially">

    <scale xmlns:android="http://schemas.android.com/apk/res/android"
        android:toXScale="1.0"
        android:fromXScale="0.0"

        android:toYScale="1.0"
        android:fromYScale="0.0"

        android:pivotX="0%"
        android:pivotY="50%"

        android:startOffset="100"
        android:duration="300" />

    <translate
        android:fromYDelta="0"
        android:toYDelta="-50"
        android:duration="2500"/>
</set>

我想在输入动画结束后关闭弹出窗口,我的目标是弹出窗口,移动到顶部一个litle和diseppear

2 个答案:

答案 0 :(得分:0)

您可以使用动画侦听器。

你必须在像这样的动画变量中定义动画

{{1}}

然后,

{{1}}

答案 1 :(得分:0)

布鲁诺,

面临同样的问题。不幸的是,目前无法获得popupwindow中使用的动画的回调。我使用countdowntimer做了一个小的解决方法。 不完美 - 但效果很好。希望它有所帮助。

    popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
        @Override
        public void onDismiss() {
            new CountDownTimer(animationDuration, 10) {
                public void onTick(long millisUntilFinished) {
                }
                public void onFinish() {
                    toggle();
                }
            }.start();
        }
    });

此外,从资源文件获取动画持续时间使用以下代码

    int[] attrs = {android.R.attr.windowExitAnimation};
    TypedArray ta = context.obtainStyledAttributes(R.style.PopUpMenuAnimation, attrs);
    int resID = ta.getResourceId(0,0);
    Animation anim = AnimationUtils.loadAnimation(context, resID);
    final long animationDuration = anim.getDuration();