首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

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

2013-07-08 
解决Android帧动画在Oncreate中启动只显示第一帧做了个简单的帧动画,在onCreate方法中start,发现只能看到

解决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;@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();}}

热点排行