解决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(); } }
相关推荐
huha 2020-10-16
xfcyhades 2020-11-20
sgafdsg 2020-11-04
Michael 2020-11-03
fengyeezju 2020-10-14
ziyexiaoxiao 2020-10-14
业余架构师 2020-10-09
OuNuo0 2020-09-29
moses 2020-09-22
Angelia 2020-09-11
qinxu 2020-09-10
刘炳昭 2020-09-10
Nostalgiachild 2020-09-07
Nostalgiachild 2020-08-17
leavesC 2020-08-14
一青年 2020-08-13
AndroidAiStudy 2020-08-07
ydc0 2020-07-30
绿豆饼 2020-07-28