Skizit
Skizit

Reputation: 44862

Displaying Animated gif using animate drawable problems

I'm attempting to have my animated gif animate on loop with the following code but I'm not having any luck...

JAVA

ImageView img = (ImageView)findViewById(R.id.load_img);
img.setBackgroundResource(R.drawable.load_animation);

AnimationDrawable frameAnimation = (AnimationDrawable) img.getBackground();

frameAnimation.start();

XML

<animation-list android:oneshot="false" xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/load_0000" android:duration="50" />
<item android:drawable="@drawable/load_0001" android:duration="50" />
<item android:drawable="@drawable/load_0002" android:duration="50" />
<item android:drawable="@drawable/load_0003" android:duration="50" />
<item android:drawable="@drawable/load_0004" android:duration="50" />
<item android:drawable="@drawable/load_0005" android:duration="50" />
<item android:drawable="@drawable/load_0006" android:duration="50" />
<item android:drawable="@drawable/load_0007" android:duration="50" />
<item android:drawable="@drawable/load_0008" android:duration="50" />
<item android:drawable="@drawable/load_0009" android:duration="50" />
</animation-list>

Anyone have any idea as to why it isn't animating?

Upvotes: 2

Views: 5567

Answers (3)

pengwang
pengwang

Reputation: 19956

i think you should use img.startxx(frameAnimation)

Upvotes: 0

richardlin
richardlin

Reputation: 383

Seems that I was experiencing the same problem, when I used whether it is setImageResource(R.drawable.load_animation) or setBackgroundResource(R.drawable.load_animation), the image wasn't displaying.

then I try to put the code in my XML view file, with android:background="@drawable/load_animation got the image showed, but still not animated, it was only displaying a static image.

then after googling around a while I found that AnimationDrawable can not work in onCreate we can either put it in onResume or onWindowsFocusChanged. So here I try with this:

    public void onWindowFocusChanged(boolean hasFocus) {
    loadingAnimation = (AnimationDrawable)
    findViewById(R.id.img_loading).getBackground();
    if (hasFocus) {
        loadingAnimation.start();
    } 
    else {
        loadingAnimation.stop();
    }
}

finally it works, the gif both showed and animated!

Upvotes: 10

CommonsWare
CommonsWare

Reputation: 1007296

Try calling setImageResource(R.drawable.load_animation), not setBackgroundResource(R.drawable.load_animation).

Upvotes: 1

Related Questions