Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何仅在动画结束后关闭弹出窗口_Android_Android Layout_Android Studio_Android Animation - Fatal编程技术网

Android 如何仅在动画结束后关闭弹出窗口

Android 如何仅在动画结束后关闭弹出窗口,android,android-layout,android-studio,android-animation,Android,Android Layout,Android Studio,Android Animation,我知道存在一个与此问题类似的主题,但我不知道如何使用我的代码使其工作 我有一个弹出窗口,我甚至不知道这是否是做我想做的事情的最佳方式,但我是Android上的新手,但我已经做了一个弹出窗口,在点击一个图像时显示了我在这里找到的一个动画,在我读到一个关于如何设置弹出窗口动画的问题,以及我必须做进入和退出的动画后,我想如何做,但现在我的问题是: 我不知道在输入动画结束后如何进行弹出窗口关闭 弹出窗口代码: LayoutInflater inflater = (LayoutInflater) get

我知道存在一个与此问题类似的主题,但我不知道如何使用我的代码使其工作

我有一个弹出窗口,我甚至不知道这是否是做我想做的事情的最佳方式,但我是Android上的新手,但我已经做了一个弹出窗口,在点击一个图像时显示了我在这里找到的一个动画,在我读到一个关于如何设置弹出窗口动画的问题,以及我必须做进入和退出的动画后,我想如何做,但现在我的问题是:

我不知道在输入动画结束后如何进行弹出窗口关闭

弹出窗口代码:

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>

我想在输入动画结束后关闭弹出窗口,我的目标是弹出显示,移动到顶部一小段并取消显示

您可以使用动画侦听器

必须在动画变量中定义动画,如下所示

Animation animation = AnimationUtils.loadAnimation(this, R.style.styleAnimationResourceEarned);
然后呢,

    animation.setAnimationListener(new Animation.AnimationListener() { 

@Override public void onAnimationStart(Animation animation) { 

} 

@Override public void onAnimationEnd(Animation animation) {
//Dismiss it
 } 

@Override public void onAnimationRepeat(Animation animation) { 

} });
布鲁诺

面临同样的问题。不幸的是,目前没有办法获得对popupwindow中使用的动画的回调。我用倒计时做了一个小的变通。 不完美-但效果很好。希望能有帮助

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

我把Animation=newanimation0,R.style.styleanimationresource;我的代码,但动画是抽象的;无法实例化。我犯了一个错误。我已经编辑了我的答案。请立即检查。不工作,因为StyleAnimationResourceEnown不是资源类型的动画,我尝试加载进入的动画,但因为在弹出窗口中我需要设置动画样式,侦听器无法检测到动画