android動畫分爲三種 View動畫 幀動畫 屬性動畫 其中幀動畫也屬於View動畫 不過和常見的View旋轉、平移、縮放、透明度的表現形式不同
7.1.1View動畫的種類
使用View動畫首先需要創建xml文件這個文件的路徑爲res/anim/filename.xml ,描述文件有固定的語法
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="true">
<alpha
android:fromAlpha="10.0"
android:toAlpha="10.0" />
<scale
android:fromXScale="10dp"
android:fromYScale="10dp"
android:pivotX="10"
android:pivotY="10"
android:toXScale="10dp"
android:toYScale="10dp" />
<translate
android:fromXDelta="10"
android:fromYDelta="10"
android:toXDelta="10"
android:toYDelta="10" />
<rotate
android:fromDegrees="10"
android:pivotX="10"
android:pivotY="10"
android:toDegrees="10" />
</set>
從上邊的語法來看,View的動畫既可以是單個動畫也可以由一系列的動畫組成
<set>標籤表示動畫集合,對應AnimationSet類它包含很多個類有兩個屬性:
android:interpolator :表示動畫集合所使用的差值器,差值器影響動畫的速度,比如非勻速動畫就需要差值器來製作動畫的過程,這個屬性可以不指定,默認爲加速減速差值器
android:shareInterpolator:表示集合中的動畫是否合計和使用一個差值器,如果集合不指定差值器,那麼子動畫就需要單獨的指定所需要的差值器了
< translate>標籤表示平移動畫:
- android:fromXDelta
表示x的起始值,比如0
- android:fromYDelta
表示y的結束值,比如100
- android:toXDelta
表示y的起始值
- android:toYDelta
表示y的結束值
< scale>標籤表示的是縮放動畫
android:fromXScale
水平方向縮放的起始值,比如0.5
android:fromYScale
豎直方向縮放的起始值
android:pivotX
縮放軸點的x座標,它會影響縮放的效果
android:pivotY
縮放軸點的y座標,它會影響縮放的效果
android:toXScale
水平方向縮放的結束值,比如1.2
android:toYScale
豎直方向縮放的起始值
<routate>表示動畫的旋轉,對應RotateAnimation,它可以使View具有旋轉的動畫效果
android:fromDegrees
旋轉開始的角度,比如0
android:toDegrees
旋轉結束的角度,比如180
android:pivotX
旋轉軸點的x
android:pivotY
旋轉軸點的y
在旋轉中也有軸的概念,他也會影響到旋轉的效果,軸點扮演者旋轉軸的角色,view圍繞着軸點進行旋轉,默認情況下在view的中心,考慮到一種情況,view圍繞自己的中心,和圍繞左上角進行90度顯然是不同的軌跡
< alpha>表示透明動畫。對應的AlphaAnimation
- android:fromAlpha
表示透明度的起始值,比如0.1
- android:toAlpha
上面都只是很簡單的介紹了XM格式,具體的使用方法還是看文檔,我們還有一些常用的屬性如下
- android:duration
動畫的時間
- android:fillAfter
動畫結束之後是否停留在結束的位置
除了在xml中創建動畫 還可以通過代碼實現 但是對於View動畫來說建議採用XML來定義動畫,這是因爲XML的可讀性更好,淡然在實際開發中使用xml也是第一選擇
7.1.2自定義View動畫
除了系統提供的四種View動畫外,我們還可以自定義View動畫自定義動畫,在實際開發過程中基本上用不到
7.1.3幀動畫
幀動畫就是順序播放的一組圖片,系統提供了一個AnimationDrawable類來實現幀動畫
在xml中定義
7.2View動畫的使用場景
view動畫還可以在一些特殊的場景使用 比如在ViewGroup中可以控制子元素的出場效果,實現不同activity之間的切換效果
7.2.1 LayoutAnimation 作用於ViewGroup爲ViewGroup制定一個動畫這樣他的子元素出場的時候就具有這種動畫了,這種效果常被用於listview中
7.2.2 Activity的切換效果
啓動一個
startActivity(new Intent(MainActivity.this,OneActivity.class));
//這是activity的跳轉動畫
overridePendingTransition(R.anim.animation,R.anim.anim_layout);
退出一個
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition(R.anim.animation, R.anim.anim_layout);
}
7.3屬性動畫
屬性動畫可以對任何隊形做動畫們甚至沒有對象也可以,屬性動畫效果得到加強,不再像View動畫支持4種屬性動畫有ValueAnimator,ObjectAnimator,AnimatorSet; ObjectAnimator繼承自ValueAnimator,而AnimatorSet可以定義一組動畫
屬性動畫可以對任意對象的屬性進行動畫,而不僅僅是View 動畫的默認時間是300 默認幀率是10
7.3.1使用屬性動畫