当前位置: 代码迷 >> Android >> 解决Android帧卡通片在Oncreate中启动只显示第一帧
  详细解决方案

解决Android帧卡通片在Oncreate中启动只显示第一帧

热度:75   发布时间:2016-05-01 10:26:18.0
解决Android帧动画在Oncreate中启动只显示第一帧
做了个简单的帧动画,在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();	}


stackoverflow 上发现一个解决办法
	@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();		}	}
  相关解决方案