zoukankan      html  css  js  c++  java
  • PathInterpolator

    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()方法。

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

  • 相关阅读:
    VUE-cli使用
    2017/04/09王晨分享课大纲
    CommonJS模块和ES6模块的区别
    css常见布局方式
    从输入 URL 到页面加载完成的过程中都发生了什么
    函数节流与防抖的实现
    JavaScript表单
    jQuery方法实现
    移动端去除横向滚动条
    请假时碰到法定假期,实际请假几天?
  • 原文地址:https://www.cnblogs.com/ldq2016/p/7016260.html
Copyright © 2011-2022 走看看