2

我试图在单击时使用 AnimationDrawable 显示帧到帧动画ImageView。但是当我单击ImageView. 我正在为动画使用 xml。

动画xml:

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="true">
  <item android:drawable="@drawable/scorepopup1" android:duration="100" />
  <item android:drawable="@drawable/scorepopup2" android:duration="100" />
  <item android:drawable="@drawable/scorepopup3" android:duration="100" />
  <item android:drawable="@drawable/scorepopup4" android:duration="100" />
  <item android:drawable="@drawable/invipopup" android:duration="100" />

</animation-list>

这是我的按钮和动画图像容器的 xml:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="70dp"
    android:layout_height="50dp"
    android:layout_alignParentRight="true" 
    android:layout_margin="5dp">

    <ImageView
    android:layout_width="35dp"
    android:layout_height="35dp"
    android:background="@drawable/bd"
    android:layout_margin="10dp"
    android:onClick="checkGem" 
    android:contentDescription="bd"/>


    <ImageView
        android:id="@+id/scorePopup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginRight="10dp"
        android:layout_marginTop="10dp" />
</LinearLayout>

checkGem 方法:

ImageView popup1 =  (ImageView) findViewById(R.id.scorePopup);

popup1.setBackgroundResource(R.drawable.popup1_animation);
AnimationDrawable frameAnimation2 = (AnimationDrawable) 

popup1.getBackground();
frameAnimation2.start();

我的问题是动画只显示一次,但我希望它在每次点击时都动画。有任何想法吗?

4

1 回答 1

4

stop()通话之前在ImageViewAnimationDrawable背景上start()拨打电话:

//...
AnimationDrawable frameAnimation2 = (AnimationDrawable) popup1.getBackground();
frameAnimation2.stop();
frameAnimation2.start();

当您第一次单击ImageView动画时,动画将运行,但最后它会发现自己处于它认为仍在运行的状态。在那种状态下,调用start()将被简单地忽略。该stop()方法“重置”该状态并且AnimationDrawable将再次从头运行。

于 2013-01-31T19:36:09.377 回答