0

我有一个显示数字 0-9 的 AnimationDrawable。

当 Activity 启动时,动画也会启动。

它从 0 开始,然后是 1,2,3 .... 并在图片“9”处停止;

显示 fe "5" 时如何停止这个小动画?

有没有使用while循环的解决方案?

ImageView view = (ImageView)findViewById(R.id.iv);
AnimationDrawable animation = (AnimationDrawable)iv.getBackground();
animation.start();
4

1 回答 1

0

您可以尝试通过以下方式进行操作:

    final ImageView imageView = (ImageView)findViewById(R.id.image);

    if (null != imageView) {
        final AnimationDrawable bgAnimation = (AnimationDrawable) imageView.getBackground();

        bgAnimation.start();

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                bgAnimation.stop();
            }
        }, 5500);
    }

假设您有如下动画 xml:

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false" >
    <item
        android:drawable="@drawable/choose12"
        android:duration="1000"/>
    <item
        android:drawable="@drawable/choose12_1"
        android:duration="1000"/>
    <item
        android:drawable="@drawable/choose12_2"
        android:duration="1000"/>
    <item
        android:drawable="@drawable/choose12_3"
        android:duration="1000"/>
    <item
        android:drawable="@drawable/choose12_4"
        android:duration="1000"/>
    <item
        android:drawable="@drawable/choose12_5"
        android:duration="1000"/>
    <item
        android:drawable="@drawable/choose12_6"
        android:duration="1000"/>
    <item
        android:drawable="@drawable/choose12_7"
        android:duration="1000"/>
    <item
        android:drawable="@drawable/choose12_8"
        android:duration="1000"/>
    <item
        android:drawable="@drawable/choose12_9"
        android:duration="1000"/>
</animation-list>

但是,这种方式在延迟很小的情况下会不稳定。因此,如果您需要更好地控制动画过程,我建议您看看PropertyAnimation 。

于 2013-07-08T12:30:27.717 回答