今天来介绍一下Android中的帧动画,帧动画其实就是一张一张的图片,以一定的顺序播放,然后形成动画。
先来上一张效果图:
图中两个按钮,start开始播放动画, stop结束动画,来看看代码:
1. res/ drawable / frame_animation.xml :
<?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/ma1" android:duration="100"></item> <item android:drawable="@drawable/ma2" android:duration="200"></item> <item android:drawable="@drawable/ma3" android:duration="100"></item> <item android:drawable="@drawable/ma4" android:duration="200"></item> <item android:drawable="@drawable/ma5" android:duration="100"></item> <item android:drawable="@drawable/ma6" android:duration="200"></item> <item android:drawable="@drawable/ma7" android:duration="100"></item> <item android:drawable="@drawable/ma8" android:duration="200"></item> </animation-list>
这个就是xml配置帧动画, 每个item就是一帧, oneshot 参数表示 要不要播放一次就结束, false表示一直循环下去
2. res/ layout/ activity_main.xml
<LinearLayout 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" android:orientation="vertical" tools:context=".MainActivity" > <Button android:id="@+id/btn_start" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="start"/> <Button android:id="@+id/btn_stop" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="stop"/> <ImageView android:id="@+id/ma_iv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true"/> </LinearLayout>
3. MainActivity.java :
package com.example.demo5_04_frameanimation; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.graphics.drawable.AnimationDrawable; import android.view.ContextMenu; import android.view.Menu; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends Activity { private AnimationDrawable ad = null; ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = (ImageView) findViewById(R.id.ma_iv); iv.setImageResource(R.drawable.frame_animation); ad = (AnimationDrawable)iv.getDrawable(); Button btn_start = (Button) findViewById(R.id.btn_start); Button btn_stop = (Button) findViewById(R.id.btn_stop); btn_start.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ad.start(); } }); btn_stop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ad.stop(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
MainActivity 中的代码就比较简单了,主要是怎么初始化一个动画。这里使用到了ImageView, 将iv的资源设置成动画,然后 动画资源通过 iv.getDrawable() 来获得,然后用 ad来控制动画的播放停止。很简单,大家看一下就懂了。
时间: 2024-10-10 13:51:35