首页 > 解决方案 > 监听 ViewAnimator 的动画结束事件

问题描述

我有以下ViewAnimator

<ViewAnimator
    android:padding="12dp"
    android:id="@+id/view_animator"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:animateFirstView="true">

    <include
        android:id="@+id/setup_password_select_type"
        layout="@layout/setup_password_select_type" />

    <include
        android:id="@+id/setup_password_pattern"
        layout="@layout/setup_password_pattern" />

    <include
        android:id="@+id/setup_password_pincode"
        layout="@layout/setup_password_pincode" />


</ViewAnimator>

我以下列方式执行动画。

viewAnimator.setInAnimation(slideInRightFast);
viewAnimator.setOutAnimation(slideOutLeftSlow);
viewAnimator.setDisplayedChild(1);

我想知道,我怎样才能收听动画事件的结束?

我试着用

this.viewAnimator.setLayoutAnimationListener(new Animation.AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {

    }

    @Override
    public void onAnimationEnd(Animation animation) {
        android.util.Log.i("CHEOK", "Animation end -> " + viewAnimator.getDisplayedChild());
    }

    @Override
    public void onAnimationRepeat(Animation animation) {

    }
});

但上述方法不起作用。

标签: android

解决方案


公共无效 setLayoutAnimationListener (Animation.AnimationListener animationListener)

指定布局动画事件必须发送到的动画侦听器。

ViewAnimator如果我是对的,我猜你想听 的动画孩子:

ViewGroup在这种情况下,您的代码正在侦听的动画是ViewAnimator但不是孩子

如果您需要,请尝试此解决方案:

slideInRightFast.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
                Toast.makeText(getApplicationContext(),"START",Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onAnimationEnd(Animation animation) {
                Toast.makeText(getApplicationContext(),"END",Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onAnimationRepeat(Animation animation) {
                Toast.makeText(getApplicationContext(),"REPEAT",Toast.LENGTH_SHORT).show();
            }
        });

希望它可以帮助你。对不起我的英语不好。


推荐阅读