欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

解决Android帧动画在Oncreate中启动只显示第一帧

程序员文章站 2023-12-29 14:16:58
...
做了个简单的帧动画,在onCreate方法中start,发现只能看到第一帧
<?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/fire01"
        android:duration="200"/>
    <item
        android:drawable="@drawable/fire02"
        android:duration="200"/>
    <item
        android:drawable="@drawable/fire03"
        android:duration="200"/>
    <item
        android:drawable="@drawable/fire04"
        android:duration="200"/>
    <item
        android:drawable="@drawable/fire05"
        android:duration="200"/>
    <item
        android:drawable="@drawable/fire06"
        android:duration="200"/>
    <item
        android:drawable="@drawable/fire07"
        android:duration="200"/>
    <item
        android:drawable="@drawable/fire08"
        android:duration="200"/>
    <item
        android:drawable="@drawable/fire09"
        android:duration="200"/>

</animation-list>


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
	>
	<ImageView
        android:id="@+id/fire_img"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="@drawable/fire_anim" />
</RelativeLayout>


	ImageView fireImg = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		ImageView fireImg = (ImageView) findViewById(R.id.fire_img);
		final AnimationDrawable animDrawable = (AnimationDrawable) fireImg
				.getBackground();
		animDrawable.start();
	}


* 上发现一个解决办法
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		ImageView fireImg = (ImageView) findViewById(R.id.fire_img);
		final AnimationDrawable animDrawable = (AnimationDrawable) fireImg
				.getBackground();
		fireImg.post(new Runnable() {
			@Override
			public void run() {
				animDrawable.start();
			}
		});
	}


或者在Activity中的onWindowFocusChanged方法中start
	@Override
	public void onWindowFocusChanged(boolean hasFocus) {
		super.onWindowFocusChanged(hasFocus);
		if (fireImg != null) {
			AnimationDrawable animDrawable = (AnimationDrawable) fireImg
					.getBackground();
			animDrawable.start();
		}
	}
相关标签: android

上一篇:

下一篇: