android 動畫詳解
阿新 • • 發佈:2019-01-25
我們在開發時,很多地方會應用到動畫,安卓為我們提供很多種動畫方式,下面介紹android為我們提供的動畫。
1.android 動畫分為三種:補間動畫,幀動畫,屬性動畫(屬性動畫為API 11 新特性)2.1補間動畫的種類
1)TranslateAnimation(平移動畫):2)ScaleAnimation (縮放動畫)3) RoateAnimation (旋轉動畫)4)AlphaAnimation(透明動畫)、它們都是Animation的子類;2.2 固定語法:2.3 標籤的介紹:
<set> : 動畫的集合,對應animationSet類,可以包含若干個動畫;android:shareInterpolator: 表示動畫是否和集合共享一個差值器,如果集合不指定差值器,子動畫就需要單獨制定所需要的差值器或者預設值<translate>: 表示平移動畫,對應TransAnimation類,屬性含義: fromXDelta ------ 表示X的起始值,比如0toXDelta -------- 表示X的結束值,比如100fromYDelta ------ 表示Y的起始值;toYDelta -------- 表示Y的結束值<scale> : 表示縮放動畫, 對應ScaleAnimation,放大和縮小的效果;屬性含義:fromXScale ----- 表示水平縮放的起始值 例如0.5;toXScale -------- 表示水平縮放的結束值, 比如1.2;fromYScale ------ 豎直方向縮放的起始值toYScale ------- 豎直方向的結束值pivotX --------- 縮放的軸點x座標,他會影響縮放效果pivotY --------- 縮放的軸點y座標,他會影響縮放效果<rotate> 表示旋轉動畫 對應於RotateAnimation, 使view具有旋轉效果fromDegrees ---- 旋轉的開始角度toDegrees ----- 旋轉的結束角度pivotX --------- 旋轉的軸點x座標pivotY ------- 旋轉軸點的Y軸座標<alpha> 表示透明度動畫 對應AlphaAnimation, 改變view的透明度fromAlpha --- 表示透明度的起始值 比如0.1 toAlpha ---- 表示透明度的結束值 比如1duration ----- 動畫的持續時間fillAfter ------ 動畫結束後是否停留結束位置,true表示停留在結束位置,false則不停留2.4 如何應用上面的動畫:
3.1 自定義view的動畫;
派生一種新動畫只需要繼承Animation這個抽象類,然後重寫initialize和applyTransformation方法,在initialize方法中做一些初始化的工作,在applyTransformation中進行相應矩陣變化。很多時候需要採用Camera來簡化矩陣變化過程,自定義view複雜的地方在於,自定義view動畫的過程主要是矩陣變化的過程,而矩陣變化是數學上的概念,實現過程比較複雜。4.1幀動畫幀動畫是順序播放一組事先定義好的圖片,類似於電影播放,系統提供另外一個類AnimationDrawable來使用幀動畫,使用舉例:在程式碼中使用:3.為viewGroup指定layoutAnimation屬性,除了在xml中指定LayoutAnimation外,還可以在LayoutAnimationController來實現
5.2 activity的切換效果
Activity有預設的切換效果,但是這個效果我們可以自定義,overridePendingTransition(int enterAnim,int exitAnim);這個方法,這個方法必須在startActivity()或者finish()之後呼叫才能生效。屬性含義:enterAnim: Activity被開啟時(相當於進入的activity),exitAnim : activity被暫停時(被移除的Activity);當啟動一個Activity時,當activity退出時,Fragment也可以新增切換動畫,由於Fragment是在API 11中新引入的類,因此需要使用v4包。這種情況我們可以通過FragmentTransction中setCustomAnimations()來切換動畫;在低版本中無法使用,不具有很高的使用價值;