逐帧动画的xml代码:
1 <?xml version="1.0" encoding="utf-8"?> 2 <animation-list xmlns:android="http://schemas.android.com/apk/res/android" 3 android:oneshot="true" > 4 5 <item 6 android:drawable="@drawable/img10" 7 android:duration="1000"> 8 </item> 9 <item 10 android:drawable="@drawable/img9" 11 android:duration="1000"> 12 </item> 13 <item 14 android:drawable="@drawable/img8" 15 android:duration="1000"> 16 </item> 17 <item 18 android:drawable="@drawable/img7" 19 android:duration="1000"> 20 </item> 21 <item 22 android:drawable="@drawable/img6" 23 android:duration="1000"> 24 </item> 25 <item 26 android:drawable="@drawable/img5" 27 android:duration="1000"> 28 </item> 29 <item 30 android:drawable="@drawable/img4" 31 android:duration="1000"> 32 </item> 33 <item 34 android:drawable="@drawable/img3" 35 android:duration="1000"> 36 </item> 37 <item 38 android:drawable="@drawable/img2" 39 android:duration="1000"> 40 </item> 41 <item 42 android:drawable="@drawable/img1" 43 android:duration="1000"> 44 </item> 45 <item 46 android:drawable="@drawable/img0" 47 android:duration="1000"> 48 </item> 49 50 </animation-list>
对应的android代码:
说明:
- android:oneshot:帧动画运行的次数,true表示运行一次,false表示循环播放;
- item:定义每帧的属性;
- android:drawable:指定该帧对应的图像资源;
- android:duration:该帧图像停留的时间。
1 public class MainActivity extends Activity { 2 3 private ImageView img; 4 private Button button; 5 private AnimationDrawable animationDrawable; 6 @Override 7 protected void onCreate(Bundle savedInstanceState) { 8 super.onCreate(savedInstanceState); 9 setContentView(R.layout.activity_main); 10 int duration=0; // duration是记录第一个动画播放的总时间 11 img=(ImageView) findViewById(R.id.imageView); 12 img.setImageResource(R.drawable.item_anim); 13 animationDrawable=(AnimationDrawable) img.getDrawable(); 14 img.post(new Runnable() { //在异步线程中执行启动的方法 15 16 @Override 17 public void run() { 18 // TODO Auto-generated method stub 19 animationDrawable.start(); //启动动画 20 } 21 }); 22 for(int i=0;i<animationDrawable.getNumberOfFrames();i++){ 23 duration+=animationDrawable.getDuration(i); //计算动画播放的时间 24 25 } 26 Handler handler=new Handler(); 27 handler.postDelayed(new Runnable() { 28 public void run() { 29 Intent intent=new Intent(MainActivity.this,TestActivity.class); //Intent 意图 在执行完动画的时候 跳转至另一个页面 30 startActivity(intent); 31 32 } 33 }, duration); 34 35 } 36 37 38 }