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

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

时间: 2025-01-19 09:18:14

PathInterpolator的相关文章

Android过场动画基础教程

Tween(补间)动画基础 在讨论系统动画之前,我们先复习一下Tween动画,也就是俗称的补间动画的基础. 补间动画的类型和属性 补间动画有4种类型: Alpha: 淡入淡出,改变透明度 Scale: 大小缩放 Translate: 位移变化 Rotate:旋转 Translate动画的属性 android:fromXDelta:X轴的起始坐标 android:toXDelta:X轴的结束坐标 android:fromYDelta:Y轴的起始坐标 android:toYDelta:Y轴的结束坐标

[译]Android 动画的灵魂—— Interpolator

本文讲的是[译]Android 动画的灵魂-- Interpolator, 用定制的非线性定时曲线改善你的动画 在现实世界中的运动是非线性的.(当你穿过街道时,你只要略微将你盯着手机的眼睛瞄一眼街道就足够保证你不会被车撞到.)当我们走路的时候,我们在加速.当我们停止的时候,我们慢慢减速到 0(除非我们被车撞了,这样我们会体验到我们朝着另一个方向突然加速).当我们下落的时候,重力使我们加速下落,当我们跳起的时候,它又会降低我们的上升速度.无论如何,我们无法在整个运动中保持一个恒定的移动速度. 所以

模拟自然动画的精髓——TimeInterpolator与TypeEvaluator

模拟自然动画的精髓--TimeInterpolator与TypeEvaluator 在今天的文章开始之前,有个忙想请大家帮一下,希望在京东.淘宝.当当.亚马逊购买了我的书<Android群英传:神兵利器>的朋友们,帮忙去网店上给个简短的评价,举手之劳,还是多谢大家啦~~ 本文绘图软件 https://www.desmos.com/calculator 通过属性动画,我们可以模拟各种属性的动画效果,但对于这些属性来说,动画变化的速率和范围,是实现一个更加『真实.自然』的动画的基础,这两件事情,就

自定义View时,用到Paint Canvas的一些温故,简单的View Animation(动画二,“大大姐”的简单变动)

转载请注明出处:王亟亟的大牛之路 上一篇讲了 Drawable Animation ,这一篇说的使用简单的View Animation,下一篇将会做一些深化的东西,上一篇的地址:http://blog.csdn.net/ddwhan0123/article/details/50457161(没看的小伙伴可以看下) 运行效果: 包结构: 一般来说动画需要以下属性: 1.初始状态: 2.结束状态: 3.持续时间: 4.Interpolator(插值器) 前几项的字面意思一目了然,最后一项是干什么呢?

Android5.0新特性详解之全新的动画_Android

 在Material Design设计中,为用户与app交互反馈他们的动作行为和提供了视觉上的连贯性.Material主题为控件和Activity的过渡提供了一些默认的动画,在android L上,允许自定义这些动画: Touch feedback 触摸反馈 Circular Reveal 圆形展示 Curved motion 曲线运动 View state changes 视图状态变化 Vector Drawables 矢量图动画 Activity transitions 活动转场 触摸反馈

详解Android Material Design自定义动画的编写_Android

新的动画Api,让你在UI控件里能创建触摸反馈,改变View的状态,切换activity的一系列自定义动画 具体有: 响应View的touch事件的触摸反馈动画 隐藏和显示View的循环展示动画 两个Activity间的切换动画 更自然的曲线运动的动画 使用View的状态更改动画,能改变一个或多个View的属性 在View的状态更改时显示状态列表动画 这些new animations Api,已内置在标准Widget中,如Button.在自定义view时也可使用这些api 动画在Material

动画机制总结

Animation 动画类型 目录介绍 1.Android动画类型 1.1 Android动画类型分类 1.2 Android动画实现方式分类 1.3 按照时间分类 2.Android逐帧动画 2.1 逐帧动画简单介绍 2.2 逐帧动画XML资源文件方式 2.3 逐帧动画代码方式 3.Android补间动画 3.1 补间动画简单介绍 3.2 差值器 3.3 AplhaAnimation 3.4 ScaleAnimation 3.5 TranslateAnimation 3.6 RotateAni

Creating Apps With Material Design —— Defining Custom Animations

转载请注明 http://blog.csdn.net/eclipsexys 翻译自Developer Android,时间仓促,有翻译问题请留言指出,谢谢 定义动画 在材料设计动画让用户与您的应用程序进行交互时,为他们的行为提供反馈,并提供可视化的连续性.该材料的主题提供了一些默认的动画按钮和活动过渡,而Android5.0(API等级21)以上,您可以自定义这些动画和创建新的:      触摸反馈     通告显示     活动转变     曲线运动     视图状态更改  自定义触摸反馈 

Android5.0新特性详解之全新的动画

在Material Design设计中,为用户与app交互反馈他们的动作行为和提供了视觉上的连贯性.Material主题为控件和Activity的过渡提供了一些默认的动画,在android L上,允许自定义这些动画: Touch feedback 触摸反馈 Circular Reveal 圆形展示 Curved motion 曲线运动 View state changes 视图状态变化 Vector Drawables 矢量图动画 Activity transitions 活动转场 触摸反馈 触