Android動畫分爲兩種:屬性動畫和查看動畫
這裏主要講查看動畫。
查看動畫分爲:逐幀(Frame)動畫和補間(Tween)動畫
AnimationDrawable類是可繪製動畫的基礎。
一、逐幀動畫 FrameAnimation(又叫可繪製動畫)
逐幀動畫: 它要求開發者把動畫過程的每張靜態圖片都收集起來,然後由Android來控制依次顯示這些靜態圖片,然後利用人眼“視覺暫留”的原理,給用戶造成動畫的效果,就像看電影一樣。
使用:存在於res/drawable/xxx.xml目錄中(若沒有drawable目錄,就創建一個drawable文件夾)1,用xml文件創建動畫
創建時使用根元素<animation-list.../>,再使用<item.../>子元素定義動畫的全部幀,並制定各幀的持續時間即可。例如本應用程序的:anim_frame_useing.xml<animation-list.../>中的屬性:android:oneshot="false" 動畫是否只運行一次,true運行一次然後停止在最後一幀;false重複運行android:visible="true" Drawable對象的初始能見度狀態,true可見,false不可見(默認爲false)android:variablePadding="true" boolean型,默認爲false,當設置爲true時,則drawable的padding值隨當前選擇的狀態而改變。<item.../>中的屬性:
android:drawable參數是每幀圖片
android:duration是每幀的時間長度(單位爲毫秒)2,直接用代碼寫幀動畫:
利用AnimationDrawable對象,每次調用addFrame(Drawable frame,int duration)向該動畫添加幀,每調用一次,就往<animation-list../>中添加一個<item.../>子元素。
二、補間動畫
就是指開發者只需指定動畫開始、動畫結束“關鍵幀”,而動畫變化的“中間幀”由系統計算、並補齊。補間動畫又分爲四大類:移動補間動畫,縮放補間動畫,旋轉補間動畫,透明補間動畫。
Android使用Animation代表抽象的動畫類,它包括以下子類:
AlphaAnimation:透明度改變的動畫。創建時要指定動畫開始時、結束時的透明度和動畫持續時間,透明度變化值(0-1)ScaleAnimation:大小縮放的動畫。創建時要指定動畫開始時縮放比、動畫結束時縮放比,並指定動畫持續時間。縮放時可以以不同中心點來(通過pivoteX、pivotY來指定“縮放中心的座標”)TranslateAnimation:位移變化的動畫。創建時指定動畫開始時爲止(通過x、y座標)、結束時位置(通過x、y座標),並指定動畫持續時間。RotateAnimation:旋轉動畫。創建時指定動畫開始時的旋轉角度、結束時旋轉角度,並指定動畫持續時間,還可以通過pivotX、pivotY來指定旋轉中心的座標。
Interpolator負責控制動畫的變化速度,使得(Alpha、Scale、Translate、Rotate)能以勻速、加速、減速、拋物線速度等各種速度變化。它是一個接口,android爲它提供瞭如下幾個實現類,分別用於實現不同動畫變化速度。
LinearInterpolator 動畫以勻速改變AccelerateInterpolator 在動畫開始的地方速度較慢,然後開始加速AccelerateDecelerateInterpolator 在動畫開始、結束的地方改變速度較慢,在中間的時候加速。CycleInterpolator 動畫循環播放特定的次數,變化速度按正弦曲線改變
DecelerateInterpolator 在動畫開始的地方改變速度較快,然後開始減速
使用:存在於res/anim/xxx.xml目錄中(若沒有anim目錄,就創建一個anim文件夾)創建時使用根元素<set.../>、<alpha.../>、<scale.../>、<translate.../>或<rotate.../>,再使用其中的各種屬性來繪畫動畫例如本應用程序的:tween_alpha_useing.xml、tween_rotate_useing.xml、tween_scale_useing.xml、tween_set_useing.xml、tween_translate_useing.xml
<!--透明度控制動畫效果 alpha浮點型值:fromAlpha 屬性爲動畫起始時透明度toAlpha 屬性爲動畫結束時透明度(0.0表示完全透明,1.0表示完全不透明)以上值取0.10-1.0之間的float數據類型的數字長整型值:duration 屬性爲動畫持續時間(時間以毫秒爲單位)android:fillBefore 指動畫結束時畫面停留在此動畫的第一幀; 默認值爲trueandroid:fillAfter 指動畫結束是畫面停留在此動畫的最後一幀。默認值爲falseandroid:fillEnabled解釋:
1,FillEnable = false 時,FillBefore 和FillAfter的值將被忽略,此時FillEnable=Flase時和FillBefore = true且FillAfter=true,且FillEnabled=true等價,也就是開始結束都會被fill坑爹。。。,一般寫成false2,FillEnable = true時,FillBefore = true,FillAfter = false;只在第一幀fill3,FillEnable = true時,FillBefore = false,FillAfter=true;只在最後一幀fill4,FillEnable = true時,FillBefore = false,FillAfter=falsestartOffset 設置啓動時間--><alphaandroid:duration="3000"android:fromAlpha="0.1"android:toAlpha="1.0"android:fillBefore="true"android:fillAfter="true"android:fillEnabled="true"/>
<!--尺寸伸縮動畫效果 scaleinterpolator 指定一個動畫的插入器accelerate_decelerate_interpolator 加速-減速 動畫插入器accelerate_interpolator 加速-動畫插入器decelerate_interpolator 減速- 動畫插入器其他的屬於特定的動畫效果fromXScale 屬性爲動畫起始時 X座標上的伸縮尺寸toXScale 屬性爲動畫結束時 X座標上的伸縮尺寸fromYScale 屬性爲動畫起始時Y座標上的伸縮尺寸toYScale 屬性爲動畫結束時Y座標上的伸縮尺寸浮點值:0.0表示收縮到沒有 ; 1.0表示正常無伸縮 ; 值小於1.0表示收縮 ; 值大於1.0表示放大pivotX 屬性爲動畫相對於物件的X座標的開始位置pivotY 屬性爲動畫相對於物件的Y座標的開始位置值:以上兩個屬性值 從0%-100%中取值 ; 50%爲物件的X或Y方向座標上的中點位置duration 屬性爲動畫持續時間(同上)fillAfter 屬性 當設置爲true ,該動畫轉化在動畫結束後被應用--><scaleandroid:duration="3000"android:fillAfter="true"android:fromXScale="0.0"android:fromYScale="0.0"android:interpolator="@android:anim/decelerate_interpolator"android:pivotX="20%"android:pivotY="30%"android:toXScale="0.8"android:toYScale="0.6" />
<!--位置轉移動畫效果 translatefromXDelta 屬性爲動畫起始時 X座標上的位置toXDelta 屬性爲動畫結束時 X座標上的位置fromYDelta 屬性爲動畫起始時 Y座標上的位置toYDelta 屬性爲動畫結束時 Y座標上的位置注意:沒有指定fromXType toXType fromYType toYType 時候,默認是以自己爲相對參照物duration 屬性爲動畫持續時間(時間以毫秒爲單位)--><translateandroid:fromXScale="0.0"android:fromYScale="0.0"android:toXScale="0.8"android:toYScale="0.6"android:duration="3000"/><!--旋轉動畫效果 rotateinterpolator 指定一個動畫的插入器有三種動畫插入器:accelerate_decelerate_interpolator 加速-減速 動畫插入器accelerate_interpolator 加速-動畫插入器decelerate_interpolator 減速- 動畫插入器其他的屬於特定的動畫效果fromDegrees 屬性爲動畫起始時物件的角度toDegrees 屬性爲動畫結束時物件旋轉的角度 可以大於360度浮點數:當角度爲負數——表示逆時針旋轉當角度爲正數——表示順時針旋轉(負數from——to正數:順時針旋轉)(負數from——to負數:逆時針旋轉)(正數from——to正數:順時針旋轉)(正數from——to負數:逆時針旋轉)pivotX 屬性爲動畫相對於物件的X座標的開始位置pivotY 屬性爲動畫相對於物件的Y座標的開始位置值:以上兩個屬性值 從0%-100%中取值 ; 50%爲物件的X或Y方向座標上的中點位置duration 屬性爲動畫持續時間(時間以毫秒爲單位)--><rotateandroid:interpolator="@android:anim/accelerate_decelerate_interpolator"android:fromDegrees="0.0"android:toDegrees="120"android:pivotX="20%"android:pivotY="30%"android:duration="3000"/>自定義補間動畫:GIF動畫播放:要想播放GIF圖片,首先需要對GIF進行解碼,然後將GIF中的每一幀分別提取出來保存到一個容器種,然後根據需要繪製每一幀,這樣就可以輕鬆實現GIF動畫的播放。創建解碼類;GIF幀管理器來管理GIF的每一幀的圖片;最後使用這兩個類來播放一張GIF的每一幀的圖片。這裏面主要是有關於應用程序資源的總結學習,其中包含了動畫資源。以後還有專門的有關動畫的鏈接。