본문 바로가기

나의 플랫폼/안드로이드

[Android] ImageView 에서 AnimationDrawable 설정

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

기본적으로 아래와 같이 ImageView의 background나 src에 Animation 되어 있는 xml을 넣어두면

문제 없이 애니메이션이 동작이 되었습니다.


drawable_animation.xml

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
<item android:drawable="@drawable/image_a" android:duration="500" />
<item android:drawable="@drawable/image_b" android:duration="500" />
<item android:drawable="@drawable/image_c" android:duration="500" />
</animation-list>


layout.xml

<ImageView
android:id="@+id/ani"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/drawable_animation"/>


이렇게 하면 왠만한 폰에서 동작이 잘 이뤄 집니다.

하지만!!! 넥서스 시리즈 등 몇개의 폰에서는 애니메이션 효과가 나지 않는 것을 확인 할 수 있습니다.

이건 AnimationDrawable을 start 해주지 않아서 발생한 문제 입니다.


소스에 아래와 같은 코드를 추가 합니다.

ImageView ani = (ImageView) findViewById(R.id.ani);
AnimationDrawable frameAnimation = (AnimationDrawable) ani.getDrawable();
frameAnimation.start();

위 소스에서 getDrawable() 이나 getBackground() 함수를 사용 함에 따라 구분하시면 됩니다.


감사합니다.


## 이블로그는 어디까지는 찾았던 부분을 잊지 않기 위해 올려놓은 것 입니다.

    내용이 부실해도 이해해 주시길 바랍니다.