解决Android帧动画在Oncreate中启动只显示第一帧
16lz
2021-01-25
做了个简单的帧动画,在onCreate方法中start,发现只能看到第一帧
stackoverflow 上发现一个解决办法
或者在Activity中的onWindowFocusChanged方法中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;@Overrideprotected 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 上发现一个解决办法
@Overrideprotected 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() {@Overridepublic void run() {animDrawable.start();}});}
或者在Activity中的onWindowFocusChanged方法中start
@Overridepublic void onWindowFocusChanged(boolean hasFocus) {super.onWindowFocusChanged(hasFocus);if (fireImg != null) {AnimationDrawable animDrawable = (AnimationDrawable) fireImg.getBackground();animDrawable.start();}}
更多相关文章
- React Native填坑之旅--与Android模块通信
- Android模拟翻书效果
- Android(安卓)studio2.2 启动模拟器出现“/dev/kvm is not found
- Android(安卓)拍照裁剪图片不清晰解决办法
- Fragment Arguments
- Android屏幕区域划分及尺寸获取
- android ResolveInfo运用
- Android(安卓)Activity切换动画overridePendingTransition
- Android中使用Fragment实现标题栏(不可滑动)