android之動畫

android動畫

android 支持三種類型的動畫

1屬性動畫:

 一種補間動畫(tweened animation),通過在目標對象的任何屬性的兩個值之間應用增量變化,可以生成一種動畫效果,這種動畫效果可以生成各種效果,從改變一個視圖的顏色或透明度來使之淡入淡出,改變字體的大小,或者增加字符的生命力。

2視圖動畫:

一種補間動畫,可以用來旋轉,移動,拉伸一個視圖

3幀動畫:

逐幀的格子動畫,用來顯示一系列的Drawable圖片


將動畫作爲外部資源定義之後,就可以在多個地方重複使用同一序列,也可以根據不同的設備硬件或者顯示方向來顯示不同的動畫。

屬性動畫:

	屬性動畫器是一個功能強大的框架,幾乎可以爲任何東西生成動畫,每個屬性動畫都存儲在項目res/animator文件夾下的一個單獨的xml文件中,
和佈局文件及Drawable一樣,動畫的文件名稱也被用作他的資源標識符。

下面的簡單xml代碼顯示了一個簡單屬性動畫,他在一秒的時間內以增量的方式在0到1之間漸變。可以調用目標對象的setAlpha方法,從而改變目標對象的透明度

用View.setAlpha(R.ainimator.fade)就可以改變view的透明度了。

視圖動畫

	每個屬性動畫都存儲在項目res/anim文件夾下的一個單獨的xml文件中,和佈局文件及Drawable一樣,動畫的文件名稱也被用作他的資源標識符。
	一個動畫可以定義按照以下的方式變化,alpha(淡入淡出)scale(縮放)translate(移動)rotate(旋轉)

	下表中顯現了每種動畫類型所支持的有效的屬性和屬性值
	

	可以使用set標籤創建一個動畫組合,一個動畫集可以包含一個或者多個動畫變換,並且支持使用多個額外標籤和屬性來定製動畫集合中的每一個動畫何時及如何播放
	下面列出了一些可以的set標籤
         	1 duration  動畫持續的時間,以毫秒爲單位
 		2 startOffSet  動畫開始之前的延遲,以毫秒爲單位
		3 fillBeforetrue 在動畫開始之前應用動畫變形
		4 fillAftertrue 在動畫開始之後應用動畫形變
		5 interploaor 用來設置這種效果隨時間變化的速度,需要引用android:anim/interpolatorName處的系統動畫資源。

注意:如果沒有使用startOffset標籤,那麼動畫集合中的的所有動畫效果都會同時執行。
 
下面這個例子展示了這樣一個動畫效果,目標在旋轉360度的同時,逐漸收縮並淡出
	
	
下面是在代碼中使用的代碼片段
Animation a = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.fade_out);
m_ImageView.setAnimation(a);
m_ImageView.setVisibility(View.GONE);

其中R.anim.fade_out就是這個xml文件的名稱。

逐幀動畫

	逐幀動畫可以用來創建Drawable的序列,沒個Drawable都會在視圖的背景中持續一段時間,
	因爲逐幀動畫代表的是可以運動的Drawable,所以他們存儲在res/drawable文件夾中,並且他們使用文件名(沒有.xml擴展名)來作爲其資源id
        下面的xml代碼片段顯示了一個簡單的逐幀動畫,他可以循環顯現一系列的位圖資源,每個資源會持續半秒鐘,爲了使用這段代碼,你需要創建新的圖片資源android1,android2, android3
	<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false" >


    <item
        andrioid:drawable="@drawable/android1"
        android:duration="500">
    </item>
    <item
        andrioid:drawable="@drawable/android2"
        android:duration="500">
    </item>
    <item
        andrioid:drawable="@drawable/android2"
        android:duration="500">
    </item>

</animation-list>
	
注意:在很多時候,應該在-ldpi, -mdip, -hdpi, 和-xdpi Drawable文件夾中根據情況給動畫鏈表中所使用的每個Drawable包含多個分辨率的版本
要播放動畫,首先將資源分配給要播放動畫的視圖,然後獲取Animation Drawable對象的引用,並開始播放動畫
ImageView mImageView = (ImageView)findViewById(R.id.imageview);
mImageView.setBackgroundResource(R.drawable.android_anim) android_anim就是上面逐幀動畫的xml文件名
AnimationDrawable ad = (AnimationDrawable)mImageview.getBackground();
ad.start(); // 開始播放動畫

在日常的工作中動畫的基本用法就這些,如果有興趣,可以去看一下動畫框架。這個我以後也會去看。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章