做了个简单的帧动画,在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>
- <?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>
- <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();
- }
- 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();
- }
- });
- }
- @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();
- }
- }
- @Override
- public void onWindowFocusChanged(boolean hasFocus) {
- super.onWindowFocusChanged(hasFocus);
- if (fireImg != null) {
- AnimationDrawable animDrawable = (AnimationDrawable) fireImg
- .getBackground();
- animDrawable.start();
- }
- }
本文介绍了一个简单的帧动画实现过程及启动问题解决方案。作者在Android应用中尝试使用帧动画,但在onCreate方法中直接启动动画时仅能显示第一帧。文中提供了动画列表XML配置文件和Activity的Java代码,并分享了两种解决方法:一是通过post方法延迟启动动画;二是将动画启动操作放在onWindowFocusChanged方法中。
772

被折叠的 条评论
为什么被折叠?



