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的更多相关文章

  1. pyqt官方示例

    文件夹 PATH 列表 卷序列号为 00000058 F027:7BEC C:. ├─activeqt │ └─webbrowser │ ├─icons │ └─pycache ├─animation ...

  2. 动画_ _ Android应用开发之所有动画使用详解

    转载: http://blog.csdn.net/yanbober/article/details/46481171 题外话:有段时间没有更新博客了,这篇文章也是之前写了一半一直放在草稿箱,今天抽空把 ...

  3. Android5.0新特性——全新的动画(animation)

    全新的动画 在Material Design设计中,为用户与app交互反馈他们的动作行为和提供了视觉上的连贯性.Material主题为控件和Activity的过渡提供了一些默认的动画,在android ...

  4. animation of android (1)

    android把动画的模式分为:property animation,view animation,drawable animation. view animation:给出动画的起止状态,并且通过一 ...

  5. Android 三种动画详解

    [工匠若水 http://blog.csdn.net/yanbober 转载请注明出处.点我开始Android技术交流] 1 背景 不能只分析源码呀,分析的同时也要整理归纳基础知识,刚好有人微博私信让 ...

  6. Android 5.0 全新的动画

    触摸反馈 ripple 触摸反馈是指用户在触摸控件时的一种可视化交互,在Android L之前,通常是通过press色变来凸显,但是因为是瞬间变化的效果,不如动画生动. 在Android L 中定义了 ...

  7. Android View动画

    Animation TypeEvaluator View的animate方法 ValueAnimator ObjectAnimator AnimatorSet 使用xml来创建动画 animation ...

  8. Android(Lollipop/5.0) Material Design(六) 自定义动画

    官网地址:https://developer.android.com/intl/zh-tw/training/material/animations.html 动画在Material设计中,为用户与a ...

  9. Android 5.0自定义动画

    材料设计中的动画对用户的操作给予了反馈,并且在与应用交互时提供了持续的可见性.材料主题提供了一些按钮动画和活动过渡,Android 5.0允许你自定义动画并且可以创建新的动画: Touch Feedb ...

随机推荐

  1. 使用 Bullet,BulletManager 在 XNA 中创建子弹攻击目标(十五)

    平方已经开发了一些 Windows Phone 上的一些游戏,算不上什么技术大牛.在这里分享一下经验,仅为了和各位朋友交流经验.平方会逐步将自己编写的类上传到托管项目中,没有什么好名字,就叫 WPXN ...

  2. hnust 心电图

    问题 A: 心电图 时间限制: 1 Sec  内存限制: 128 MB提交: 621  解决: 250[提交][状态][讨论版] 题目描述 众所周知,ACM/ICPC实验室聚集了一堆学霸Orz 有学霸 ...

  3. opendatasource问题

    EXEC sp_configure 'show advanced options', 1 GO RECONFIGURE GO EXEC sp_configure 'Ad Hoc Distributed ...

  4. easyui在datagrid只想选择一条

    <table class="" id="jgrid" data-options="fitColumns:true,rownumbers: tru ...

  5. g2o安装

    1.安装依赖项 sudo apt-get install libeigen3-dev libsuitesparse-dev libqt4-dev qt4-qmake 2.安装依赖项  libqglvi ...

  6. 洛谷P1175 表达式的转换

    P1175 表达式的转换 44通过 147提交 题目提供者该用户不存在 标签云端 难度提高+/省选- 时空限制1s / 128MB 提交  讨论  题解 最新讨论更多讨论 这题有毒 抄题解棒责五十! ...

  7. oracle char和varchar2的区别

    char的长度是固定的,varchar2长度是可以变化的.比如:存储的是“abc”,对于char(20)来说,表示你存储的占20个字节(包括17个空字符):而对于varchar2(20)来说,表示你存 ...

  8. WebService 序列化和反序列化

    参考了Fish LI的Xml读取文章,写了XML序列化和反序列化的文章. 序列化:把实体列转化成XML.反序列化:把XML按一定的规则转化成需要的实体列. 序列化和反序列化化使用到的类, using ...

  9. 读扇区错误:0柱面0磁头1扇区(硬盘问题,蓝屏等 0x0000007B)

    原文发布时间为:2010-05-25 -- 来源于本人的百度文章 [由搬家工具导入] 读扇区错误:0柱面0磁头1扇区(硬盘问题,蓝屏等 0x0000007B) DISKGEN能找到,那就没什么大问题的 ...

  10. DataBinder.Eval值的判断

    原文发布时间为:2009-04-10 -- 来源于本人的百度文章 [由搬家工具导入] 问:如何对<%# DataBinder.Eval(Container.DataItem,"Ly_R ...