1. 程式人生 > >Android 設定動畫變化的速率

Android 設定動畫變化的速率

Android 設定動畫變化的速率

我們知道 Android 的動畫有檢視動畫,屬性動畫,幀動畫等等,對於檢視動畫我們是可以設定動畫的變化速率的,有加速,減速,先加速再減速…等等各種變化速率的效果。對於檢視動畫,建立動畫有兩種方式,一種是在 xml 檔案中建立,另一種是在程式碼中建立,因此對應的設定動畫變化速率也有兩種方式。

一、xml 中設定動畫的變化速率

1.設定動畫為加速動畫(動畫播放中越來越快):

android:interpolator="@android:anim/accelerate_interpolator"

2.設定動畫為減速動畫(動畫播放中越來越慢) :

android:interpolator="@android:anim/decelerate_interpolator"

3.設定動畫為先加速在減速(開始速度最快 逐漸減慢):

android:interpolator="@android:anim/accelerate_decelerate_interpolator"

4.先反向執行一段,然後再加速反向回來(相當於我們彈簧,先反向壓縮一小段,然後在加速彈出):

android:interpolator="@android:anim/anticipate_interpolator"

5.同上先反向一段,然後加速反向回來,執行完畢自帶回彈效果(更形象的彈簧效果):

android:interpolator="@android:anim/anticipate_overshoot_interpolator"

6.執行完畢之後會回彈跳躍幾段(相當於我們高空掉下一顆皮球,到地面是會跳動幾下):

android:interpolator="@android:anim/bounce_interpolator"

7.迴圈,動畫迴圈一定次數,值的改變為一正弦函式:Math.sin(2* mCycles* Math.PI* input):

android:interpolator="@android:anim/cycle_interpolator"

8.線性均勻改變:

android:interpolator="@android:anim/linear_interpolator"

9.加速執行,結束之後回彈:

android:interpolator="@android:anim/overshoot_interpolator"

二、程式碼中設定動畫的變化速率

1.設定動畫為加速動畫(動畫播放中越來越快):

animation.setInterpolator(new AccelerateInterpolator());

2.設定動畫為減速動畫(動畫播放中越來越慢) :

animation.setInterpolator(new DecelerateInterpolator());

3.設定動畫為先加速在減速(開始速度最快 逐漸減慢):

animation.setInterpolator(new AccelerateDecelerateInterpolator());

4.先反向執行一段,然後再加速反向回來(相當於我們彈簧,先反向壓縮一小段,然後在加速彈出):

animation.setInterpolator(new AnticipateInterpolator());

5.同上先反向一段,然後加速反向回來,執行完畢自帶回彈效果(更形象的彈簧效果):

animation.setInterpolator(new AnticipateOvershootInterpolator());

6.執行完畢之後會回彈跳躍幾段(相當於我們高空掉下一顆皮球,到地面是會跳動幾下):

animation.setInterpolator(new BounceInterpolator());

7.迴圈,動畫迴圈一定次數,值的改變為一正弦函式:Math.sin(2* mCycles* Math.PI* input):

animation.setInterpolator(new CycleInterpolator(2));

8.線性均勻改變:

animation.setInterpolator(new LinearInterpolator());

9.加速執行,結束之後回彈:

animation.setInterpolator(new OvershootInterpolator());

如果覺得文章不錯或者有幫到你的話,歡迎大家點贊和評論!

你還可以在下面這些地方也可以找到我:

微信公眾號:「IT大飛說」
GitHub:https://github.com/xinpengfei520
CSDN:https://blog.csdn.net/xinpengfei521
簡書:https://www.jianshu.com/u/268aa8e1a12f
掘金:https://juejin.im/user/57c82d0779bc440063eac0f8
CnBlog:https://www.cnblogs.com/angel88/
知乎:https://www.zhihu.com/people/xin-peng-fei-9/activities
微博:https://weibo.com/u/1783451275?is_all=1
Blog:http://www.x-sir.com