在v4 support library:Revision 22.1.0的時候,Google在兼容庫中增加了幾個新的類,用于創建更加真實的動畫效果。
Added the following interpolation classes for animation: FastOutLinearInInterpolator, FastOutSlowInInterpolator, LinearOutSlowInInterpolator, LinearOutSlowInInterpolator, and PathInterpolatorCompat.從命名我們大致可以看出來,這個實際上就是新增的插值器,但實現了更加真實的動畫效果,了解我之前關于插值器的文章的朋友,應該很清楚,不了解的開發者可以先看下關于插值器的介紹:模擬自然動畫的精髓——https://gold.xitu.io/post/57e33e2cc4c971005f4bf6ff
其它幾個Interpolator非常好理解,實際上在沒有他們之前,我們也可以通過自己來計算函數值來創建這樣的Interpolator,也就是類似——緩進急出、緩出急進這樣的插值器效果。
那么今天我們的主角,就是——PathInterpolatorCompat,他實際上是PathInterpolator的兼容版本,可以兼容到Android的低版本設備。利用PathInterpolatorCompat,我們可以非常方便的創建二階、三階的貝塞爾曲線動畫Interpolator。
官網鎮樓
https://developer.android.com/reference/android/support/v4/view/animation/PathInterpolatorCompat.html
這個類的使用非常簡單,只有一個重載的creat()方法。
| Method | code |
|---|---|
| create(Path path) | Create an Interpolator for an arbitrary Path. |
| create(float controlX1, float controlY1, float controlX2, float controlY2) | Create an Interpolator for a cubic Bezier curve. |
| create(float controlX, float controlY) | Create an Interpolator for a quadratic Bezier curve. |
當然,不僅僅是貝塞爾曲線,實際上只要是Path繪制的曲線,都可以作用在PathInterpolatorCompat上。
OK,有了這個工具,我們就可以很方便的使用它來創建各種插值曲線了,舉個非常簡單的例子:
Path path = new Path();path.cubicTo(0.2f, 0f, 0.1f, 1f, 0.5f, 1f);path.lineTo(1f, 1f);ObjectAnimator animator = ObjectAnimator.ofFloat(view, View.TRANSLATION_X, 500);animator.setInterpolator(PathInterpolatorCompat.create(path));animator.start();我們繪制了一個簡單的三階貝塞爾曲線,并作用到PathInterpolatorCompat設置給Animation,這樣就完成了,不再需要像我們之前做的那樣,通過二階、三階貝塞爾曲線的數學計算公式來進行計算,極大的方便了開發者。
新聞熱點
疑難解答