PathInterpolator
在v4 support library:Revision 22.1.0的時候瀑晒,Google在兼容庫中增加了幾個新的類,用于創(chuàng)建更加真實的動畫效果。
Added the following interpolation classes for animation:
FastOutLinearInInterpolator, FastOutSlowInInterpolator,
LinearOutSlowInInterpolator, LinearOutSlowInInterpolator,
and PathInterpolatorCompat.
從命名我們大致可以看出來,這個實際上就是新增的插值器岳服,但實現(xiàn)了更加真實的動畫效果,了解我之前關(guān)于插值器的文章的朋友希俩,應(yīng)該很清楚吊宋,不了解的開發(fā)者可以先看下關(guān)于插值器的介紹:模擬自然動畫的精髓——https://gold.xitu.io/post/57e33e2cc4c971005f4bf6ff
PathInterpolatorCompat
其它幾個Interpolator非常好理解,實際上在沒有他們之前颜武,我們也可以通過自己來計算函數(shù)值來創(chuàng)建這樣的Interpolator璃搜,也就是類似——緩進(jìn)急出、緩出急進(jìn)這樣的插值器效果鳞上。
那么今天我們的主角这吻,就是——PathInterpolatorCompat,他實際上是PathInterpolator的兼容版本篙议,可以兼容到Android的低版本設(shè)備唾糯。利用PathInterpolatorCompat,我們可以非常方便的創(chuàng)建二階鬼贱、三階的貝塞爾曲線動畫Interpolator移怯。
官網(wǎng)鎮(zhèn)樓
這個類的使用非常簡單,只有一個重載的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. |
當(dāng)然舟误,不僅僅是貝塞爾曲線,實際上只要是Path繪制的曲線雁佳,都可以作用在PathInterpolatorCompat上脐帝。
OK,有了這個工具糖权,我們就可以很方便的使用它來創(chuàng)建各種插值曲線了堵腹,舉個非常簡單的例子:
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設(shè)置給Animation星澳,這樣就完成了疚顷,不再需要像我們之前做的那樣,通過二階禁偎、三階貝塞爾曲線的數(shù)學(xué)計算公式來進(jìn)行計算腿堤,極大的方便了開發(fā)者。