美文网首页安卓
PathInterpolator

PathInterpolator

作者: eclipse_xu | 来源:发表于2017-02-07 13:32 被阅读1010次

    PathInterpolator

    在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

    PathInterpolatorCompat

    其它几个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,这样就完成了,不再需要像我们之前做的那样,通过二阶、三阶贝塞尔曲线的数学计算公式来进行计算,极大的方便了开发者。

    相关文章

      网友评论

      本文标题:PathInterpolator

      本文链接:https://www.haomeiwen.com/subject/mhzeittx.html