Android中的繪圖動畫(Drawable Animation)就像傳統的電影一樣,將畫面按一定順序和速度逐幀播放,人眼看上去就像連續的畫面一樣。
繪圖動畫的機理就是在一個可以顯示drawable資源的控件中連續播放不同的drawable資源文件(例如圖片)。
那麼我們來看一樣如何製作一段繪圖動畫:
1)首先我們需要蒐集我們要用的drawable資源。這裏我們蒐集一些小圖標,這些圖標的命名都在圖片下面附上了:
pic1.9.png pic2.9.png pic3.9.png
2)然後我們將這些drawable資源導入到響應的Android工程目錄中,如圖:
可以看見,我們的3個drawable資源文件已經在
res/drawable-hdpi/
目錄中了。
3)在這個 res/drawable-hdpi/
目錄中再創建一個xml文件,然後在這個xml文件中定義我們的動畫要用到的畫面。這個xml文件的路徑+文件名爲res/drawable-hdpi/test_animation.xml
,實例代碼如下:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false" > <!-- android:oneshot爲false則循環播放,爲true則值播放一次到最後一幀 -->>
<item
android:drawable="@drawable/pic1"
android:duration="80"/> <!-- android:duration設定換幀的時間間隔 -->
<item
android:drawable="@drawable/pic2"
android:duration="80"/>
<item
android:drawable="@drawable/pic3"
android:duration="80"/>
</animation-list>
4)好了,這樣就有了一個可以用來播放的動畫資源了,但是要播放它我們還需要在工程代碼中添加如下代碼:
public class MainActivity extends Activity {
private AnimationDrawable testAnimation;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//要事先在active_main.xml中定義一個ImageView並把id設置爲animationImageView
ImageView imageView = (ImageView) findViewById(R.id.animationImageView);
imageView.setBackgroundResource(R.drawable.test_animation);
testAnimation = (AnimationDrawable) imageView.getBackground();
}
//點擊一下屏幕則開始播放動畫
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
testAnimation.start(); //使用start()方法來播放動畫
return true;
}
return super.onTouchEvent(event);
}
}
通過如上4步,一段繪圖動畫就製作完畢了。
※注意:AnimationDrawable類的start()方法不能再onCreate()生命週期函數中調用,因爲你的AnimationDrawable對象可能還沒有加載完畢。如果你希望動畫能夠直接播放,你應該在activity的onWindowFocusChanged()函數中調用它。
如果轉載請註明出處:http://blog.csdn.net/gophers/article/details/22983187