android - 有没有办法在 AnimatedVectorDrawables 中监听动画结束

标签 android animation listener android-vectordrawable

我创建了一个 AnimatedVectorDrawable,它工作得很好,现在我正在寻找一种方法来更改动画或在完成后隐藏 View 。我希望有一个听众,但看起来没有。有人可以帮忙吗?

编辑

所以我找到了一种解决方法,但不是一种非常优雅的方法。我所做的是创建一个线程并轮询动画是否正在运行。

new Runnable() {
    public void run() {
        while(mLoop) {
            if(mAnimatedVectorDrawable.isRunning()) {
                Thread.sleep(mPollingInterval);
            } else {
                mLoop = false;
                // TODO what ever
            }
        }
    }
};

如果有人找到更好的解决方案,请分享。

最佳答案

尚未尝试过,但 Android 6.0 有 registerAnimationCallback来自 Animatable2 接口(interface)的方法

编辑:是的,这适用于 Android 6.0 模拟器:

mAnimatedVectorDrawable.registerAnimationCallback (new Animatable2.AnimationCallback(){
    public void onAnimationEnd(Drawable drawable){
        //Do something
    }
}

Edit2:看起来他们没有在支持库 23.2+ 的 AnimatedVectorDrawableCompat 中添加对此的支持:(

Edit3:看起来这是在支持库 25.3.0 中添加的

谢谢卡森!

关于android - 有没有办法在 AnimatedVectorDrawables 中监听动画结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28812604/

相关文章:

android - 如何保护存储在 Android APK 中的 Assets

Android 界面错误 ImageButton

java - 如何针对不同环境设置java

CSS3动画和变换属性的Javascript代码

javascript - 如何用视频创建网络动画——比如 apple.com/ipad-air

java - ListSelectionListener 调用 setSelected 方法时不会触发事件

java - 尝试设置一个抽象的监听器

java - 大小大于 2.3MB 的 png 文件出现 OOM 错误

android - 如何让动画无限播放

java - 像 Android Gmail 一样更新监听器