Interpolator 屬性是 Animation 類的一個(gè) XML 屬性,所以 alpha、scale、rotate、translate、set 都會(huì)繼承得到這個(gè)屬性。Interpolator 被譯為插值器,其實(shí)我不大能從字面上理解為什么會(huì)這樣譯,其實(shí)他是一個(gè)指定動(dòng)畫如何變化的東東,跟 PS 里的動(dòng)作有點(diǎn)類似:隨便拿來一張圖片,應(yīng)用一個(gè)動(dòng)作,圖片就會(huì)指定變化。
Interpolator 的系統(tǒng)值有下面幾個(gè):
http://wiki.jikexueyuan.com/project/android-animation/images/6.png" alt="" />
意義如下:
下面看看各個(gè)標(biāo)簽在應(yīng)用上面的每個(gè)插值器后會(huì)運(yùn)動(dòng)軌跡會(huì)怎樣。
下面先看看 Scale 標(biāo)簽應(yīng)用插值器后,都會(huì)變成什么樣。
先看下 XML 代碼:(從控件中心點(diǎn),從 0 放大到 1.4 倍,保持結(jié)束時(shí)的狀態(tài))
<?xml version="1.0" encoding="utf-8"?>
<scale xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXScale="0.0"
android:toXScale="1.4"
android:fromYScale="0.0"
android:toYScale="1.4"
android:pivotX="50%"
android:pivotY="50%"
android:duration="700"
android:fillAfter="true"
/>
下面一個(gè)個(gè)看看,每個(gè) xml 值對(duì)應(yīng)的 scale 動(dòng)畫是怎樣的。
http://wiki.jikexueyuan.com/project/android-animation/images/15.gif" alt="" />
AccelerateInterpolator 在動(dòng)畫開始的地方速率改變比較慢,然后開始加速 http://wiki.jikexueyuan.com/project/android-animation/images/16.gif" alt="" />
DecelerateInterpolator 在動(dòng)畫開始的地方快然后慢 http://wiki.jikexueyuan.com/project/android-animation/images/17.gif" alt="" />
AnticipateInterpolator 開始的時(shí)候向后然后向前甩 http://wiki.jikexueyuan.com/project/android-animation/images/18.gif" alt="" />
AnticipateOvershootInterpolator 開始的時(shí)候向后然后向前甩一定值后返回最后的值 http://wiki.jikexueyuan.com/project/android-animation/images/19.gif" alt="" />
BounceInterpolator 動(dòng)畫結(jié)束的時(shí)候彈起 http://wiki.jikexueyuan.com/project/android-animation/images/20.gif" alt="" />
CycleInterpolator 動(dòng)畫循環(huán)播放特定的次數(shù),速率改變沿著正弦曲線 http://wiki.jikexueyuan.com/project/android-animation/images/21.gif" alt="" />
LinearInterpolator 以常量速率改變 http://wiki.jikexueyuan.com/project/android-animation/images/22.gif" alt="" />
OvershootInterpolator 向前甩一定值后再回到原來位置 http://wiki.jikexueyuan.com/project/android-animation/images/23.gif" alt="" />
下面先看看 rotate 標(biāo)簽應(yīng)用插值器后,都會(huì)變成什么樣。
先看下 XML 代碼:(從控件中心點(diǎn),從 0 放大到 1.4 倍,保持結(jié)束時(shí)的狀態(tài))
[html] view plain
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromDegrees="0"
android:toDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:duration="700"
android:fillAfter="true"
/>
AccelerateDecelerateInterpolator 在動(dòng)畫開始與介紹的地方速率改變比較慢,在中間的時(shí)候加速
http://wiki.jikexueyuan.com/project/android-animation/images/24.gif" alt="" />
AccelerateInterpolator 在動(dòng)畫開始的地方速率改變比較慢,然后開始加速 http://wiki.jikexueyuan.com/project/android-animation/images/25.gif" alt="" />
DecelerateInterpolator 在動(dòng)畫開始的地方快然后慢 http://wiki.jikexueyuan.com/project/android-animation/images/26.gif" alt="" />
AnticipateInterpolator 開始的時(shí)候向后然后向前甩 http://wiki.jikexueyuan.com/project/android-animation/images/27.gif" alt="" />
AnticipateOvershootInterpolator 開始的時(shí)候向后然后向前甩一定值后返回最后的值 http://wiki.jikexueyuan.com/project/android-animation/images/28.gif" alt="" />
BounceInterpolator 動(dòng)畫結(jié)束的時(shí)候彈起 http://wiki.jikexueyuan.com/project/android-animation/images/29.gif" alt="" />
CycleInterpolator 動(dòng)畫循環(huán)播放特定的次數(shù),速率改變沿著正弦曲線 http://wiki.jikexueyuan.com/project/android-animation/images/30.gif" alt="" />
LinearInterpolator 以常量速率改變 http://wiki.jikexueyuan.com/project/android-animation/images/31.gif" alt="" />
OvershootInterpolator 向前甩一定值后再回到原來位置 http://wiki.jikexueyuan.com/project/android-animation/images/32.gif" alt="" />
下面先看看 alpha 標(biāo)簽應(yīng)用插值器后,都會(huì)變成什么樣。
將透明度從 0 變成 1.0,使用不同的插值器看看有什么不同(因?yàn)橹皇峭该鞫鹊淖兓曰究床怀鰜碛惺裁床煌?[html] view plain
<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="3000"
android:fillAfter="true"
/>
AccelerateDecelerateInterpolator 在動(dòng)畫開始與介紹的地方速率改變比較慢,在中間的時(shí)候加速
http://wiki.jikexueyuan.com/project/android-animation/images/33.gif" alt="" />
AccelerateInterpolator 在動(dòng)畫開始的地方速率改變比較慢,然后開始加速 http://wiki.jikexueyuan.com/project/android-animation/images/34.gif" alt="" />
DecelerateInterpolator 在動(dòng)畫開始的地方快然后慢 http://wiki.jikexueyuan.com/project/android-animation/images/35.gif" alt="" />
AnticipateInterpolator 開始的時(shí)候向后然后向前甩 http://wiki.jikexueyuan.com/project/android-animation/images/36.gif" alt="" />
AnticipateOvershootInterpolator 開始的時(shí)候向后然后向前甩一定值后返回最后的值 http://wiki.jikexueyuan.com/project/android-animation/images/37.gif" alt="" />
BounceInterpolator 動(dòng)畫結(jié)束的時(shí)候彈起 http://wiki.jikexueyuan.com/project/android-animation/images/38.gif" alt="" />
CycleInterpolator 動(dòng)畫循環(huán)播放特定的次數(shù),速率改變沿著正弦曲線 http://wiki.jikexueyuan.com/project/android-animation/images/39.gif" alt="" />
LinearInterpolator 以常量速率改變 http://wiki.jikexueyuan.com/project/android-animation/images/40.gif" alt="" />
OvershootInterpolator 向前甩一定值后再回到原來位置 http://wiki.jikexueyuan.com/project/android-animation/images/41.gif" alt="" />
下面先看看 translate 標(biāo)簽應(yīng)用插值器后,都會(huì)變成什么樣。
把控件從(0,0)平移到(-200,-200)的位置,保持結(jié)束時(shí)狀態(tài)不變,使用不同插值器。
[html] view plain
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:fromXDelta="0"
android:toXDelta="-200"
android:fromYDelta="0"
android:toYDelta="-200"
android:duration="2000"
android:fillAfter="true"
/>
AccelerateDecelerateInterpolator 在動(dòng)畫開始與介紹的地方速率改變比較慢,在中間的時(shí)候加速
http://wiki.jikexueyuan.com/project/android-animation/images/42.gif" alt="" />
AccelerateInterpolator 在動(dòng)畫開始的地方速率改變比較慢,然后開始加速 http://wiki.jikexueyuan.com/project/android-animation/images/43.gif" alt="" />
DecelerateInterpolator 在動(dòng)畫開始的地方快然后慢 http://wiki.jikexueyuan.com/project/android-animation/images/44.gif" alt="" />
AnticipateInterpolator 開始的時(shí)候向后然后向前甩 http://wiki.jikexueyuan.com/project/android-animation/images/45.gif" alt="" />
AnticipateOvershootInterpolator 開始的時(shí)候向后然后向前甩一定值后返回最后的值 http://wiki.jikexueyuan.com/project/android-animation/images/46.gif" alt="" />
BounceInterpolator 動(dòng)畫結(jié)束的時(shí)候彈起 http://wiki.jikexueyuan.com/project/android-animation/images/47.gif" alt="" />
CycleInterpolator 動(dòng)畫循環(huán)播放特定的次數(shù),速率改變沿著正弦曲線 http://wiki.jikexueyuan.com/project/android-animation/images/48.gif" alt="" />
LinearInterpolator 以常量速率改變 http://wiki.jikexueyuan.com/project/android-animation/images/49.gif" alt="" />
OvershootInterpolator 向前甩一定值后再回到原來位置 http://wiki.jikexueyuan.com/project/android-animation/images/50.gif" alt="" />
這篇文章到這就結(jié)束了,因?yàn)閯?dòng)畫比較多,可能看的會(huì)有點(diǎn)暈,下面我會(huì)給出上面效果所對(duì)應(yīng)的源碼,大家可以運(yùn)行一下。
如果我的文章能幫到您,請(qǐng)加關(guān)注,謝謝。
源碼下載地址:http://download.csdn.net/detail/harvic880925/8038491
請(qǐng)大家尊重原創(chuàng)者版權(quán),轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/harvic880925/article/details/40049763 謝謝!