Interpolator:在Android中方便使用一些常见的CubicBezier贝塞尔曲线动画效果

说明

方便在Android中使用Interpolator一些常见的CubicBezier贝塞尔曲线动画效果。

示意图如下在这里插入图片描述


import android.view.animation.Interpolator
import androidx.core.view.animation.PathInterpolatorCompat/*** 参考* android https://yisibl.github.io/cubic-bezier* 实现常见贝塞尔曲线动画效果* 枚举拿来方便直接使用** *Reference* *Android https://yisibl.github.io/cubic-bezier* *Implementing common Bezier curve animation effects* *Enumeration for easy and direct use**/
object CubicBezierInterpolators {fun createInterpolator(type: Type): Interpolator {return type.create()}sealed class Type(val name: String? = null,private val controlX1: Float,private val controlY1: Float,private val controlX2: Float,private val controlY2: Float) {object EASE : Type("EASE", 0.25f, 0.1f, 0.25f, 1f)object LINEAR : Type("LINEAR", 0f, 0f, 1f, 1f)object EASE_IN : Type("EASE_IN", 0.42f, 0f, 1f, 1f)object EASE_OUT : Type("EASE_OUT", 0f, 0f, 0.58f, 1f)object EASE_IN_OUT : Type("EASE_IN_OUT", 0.42f, 0f, 0.58f, 1f)object EASE_IN_SINE : Type("EASE_IN_SINE", 0.47f, 0f, 0.75f, 0.72f)object EASE_OUT_SINE : Type("EASE_OUT_SINE", 0.39f, 0.57f, 0.56f, 1f)object EASE_IN_OUT_SINE : Type("EASE_IN_OUT_SINE", 0.45f, 0.05f, 0.55f, 0.95f)object EASE_IN_QUAD : Type("EASE_IN_QUAD", 0.55f, 0.09f, 0.68f, 0.53f)object EASE_OUT_QUAD : Type("EASE_OUT_QUAD", 0.25f, 0.46f, 0.45f, 0.94f)object EASE_IN_OUT_QUAD : Type("EASE_IN_OUT_QUAD", 0.46f, 0.03f, 0.52f, 0.96f)object EASE_IN_CUBIC : Type("EASE_IN_CUBIC", 0.55f, 0.06f, 0.68f, 0.19f)object EASE_OUT_CUBIC : Type("EASE_OUT_CUBIC", 0.22f, 0.61f, 0.36f, 1f)object EASE_IN_OUT_CUBIC : Type("EASE_IN_OUT_CUBIC", 0.65f, 0.05f, 0.36f, 1f)object EASE_IN_QUART : Type("EASE_IN_QUART", 0.9f, 0.03f, 0.69f, 0.22f)object EASE_OUT_QUART : Type("EASE_OUT_QUART", 0.17f, 0.84f, 0.44f, 1f)object EASE_IN_OUT_QUART : Type("EASE_IN_OUT_QUART", 0.77f, 0f, 0.18f, 1f)object EASE_IN_QUINT : Type("EASE_IN_QUINT", 0.76f, 0.05f, 0.86f, 0.06f)object EASE_OUT_QUINT : Type("EASE_OUT_QUINT", 0.23f, 1f, 0.32f, 1f)object EASE_IN_OUT_QUINT : Type("EASE_IN_OUT_QUINT", 0.86f, 0f, 0.07f, 1f)object EASE_IN_EXPO : Type("EASE_IN_EXPO", 0.95f, 0.05f, 0.8f, 0.04f)object EASE_OUT_EXPO : Type("EASE_OUT_EXPO", 0.19f, 1f, 0.22f, 1f)object EASE_IN_CIRC : Type("EASE_IN_CIRC", 0.6f, 0.04f, 0.98f, 0.34f)object EASE_OUT_CIRC : Type("EASE_OUT_CIRC", 0.08f, 0.82f, 0.17f, 1f)object EASE_IN_OUT_CIRC : Type("EASE_IN_OUT_CIRC", 0.79f, 0.14f, 0.15f, 0.86f)object EASE_IN_BACK : Type("EASE_IN_BACK", 0.6f, -0.28f, 0.74f, 0.05f)object EASE_OUT_BACK : Type("EASE_OUT_BACK", 0.18f, 0.89f, 0.32f, 1.27f)object EASE_IN_OUT_BACK : Type("EASE_IN_OUT_BACK", 0.68f, -0.55f, 0.27f, 1.55f)fun create(): Interpolator {return PathInterpolatorCompat.create(controlX1, controlY1, controlX2, controlY2)}}
}

使用

  1. 将 CubicBezierInterpolators.kt 类Copy到你项目中。

  2. 使用如下:

val animator: ObjectAnimator = ObjectAnimator.ofFloat(yourView, "translationX", 0, 500)
animator.duration = 1000
animator.interpolator = CubicBezierInterpolators.Type.EASE.create()
animator.start()

DEMO

  1. Demo.apk 点击下载
  2. Demo的Gif效果图

项目和演示效果可以去Github查看

项目地址: https://github.com/notwalnu/CubicBezierAndroidInterpolators 。

感谢

http://yisibl.github.io/cubic-bezier/#.25,.1,.25,1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/448645.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

搭建frp

1.frp 是什么? frp 是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网…

51单片机学习笔记 --步进电机驱动说明

文章目录 工作原理代码编写驱动方式全步进驱动半步进驱动微步进驱动 工作原理 工作原理简要说明,和单片机一起配合使用的步进电机多为28BYJ28 五线四相步进电机,配合ULN2003驱动板进行控制,如图所示,对于扭矩、精度要求较高的还有…

[激光原理与应用-73]:数据采集卡 - STM32F107

目录 一、STM32F107 概述 二、STM32F107主要指标 三、STM32F107主要接口信号 四、STM32F107使用场景 五、STM32选型 六、STM32F107 ADC详解 七、STM32F107 ADC与专用ADC芯片AD7606的比较 同步采集 八、AD7606专用ADC转换相比STM32F107内嵌ADC的优势 一、STM32F107 概述…

CSS局限属性contain:优化渲染性能的利器

CSS局限属性contain:优化渲染性能的利器 在网页开发中,优化渲染性能是一个重要的目标。CSS局限属性contain是一个强大的工具,可以帮助我们提高网页的渲染性能。本文将介绍contain属性的基本概念、用法和优势,以及如何使用它来优化…

[Linux 进程(六)] 写时拷贝 - 进程终止

文章目录 1、写时拷贝2、进程终止2.1 进程退出场景2.1.1 退出码2.1.2 错误码错误码 vs 退出码2.1.3 代码异常终止引入 2.2 进程常见退出方法2.2.1 exit函数2.2.2 _exit函数 本片我们主要来讲进程控制,讲之前我们先把写时拷贝理清,然后再开始讲进程控制。…

Vue3页面自适应,表格滚动高度

适用场景:在网页的表格中我们需要获取页面的还可以用的高度来为表格做滚动的时候就需要使用响应高度,可以使用原生的calc来计算,但是calc有个缺陷就是,你要去计算多个盒子的高度,使用下面的代码就可以直接获取当前元素…

大创项目推荐 题目:基于深度学习的图像风格迁移 - [ 卷积神经网络 机器视觉 ]

文章目录 0 简介1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 简介 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习卷积神经网络的花卉识别 该项目较为新颖,适合作为竞赛课题方向&#xff0c…

C++面试宝典第26题:螺旋矩阵

题目 给你一个正整数n,生成一个包含1到n的平方的所有元素,且元素按顺时针顺序螺旋排列成n x n的正方形矩阵。 示例: 输入:n = 3 输出:[[1,2,3],[8,9,4],[7,6,5]] 解析 螺旋矩阵是指按照顺时针(或逆时针)螺旋顺序排列元素的二维矩阵。比如:给定一个如下的3x3矩阵,按顺…

Three.js学习3:第一个Three.js页面

一、一图看懂Three.js 坐标 这个没什么好说的,只是需要注意颜色。在 Three.js 提供的编辑器中,各种物体的坐标也这样的色彩: 红色:x 轴 绿色:y 轴 蓝色:z 轴 Three.js 提供的编辑器可以在本地 Three.js …

备战蓝桥杯---数据结构与STL应用(进阶3)

本专题主要围绕并查集。 首先,什么是并查集? 顾名思义,即实现集合的合并与查找。 我们用树的方式来存一个集合,有共同的根即在同一个集合,合并时让一个集合的根作为另一个集合的儿子即可。 现在,当我们合…

yo!这里是c++IO流相关介绍

目录 前言 C语言的输入输出 CIO流基本介绍 流的概念 IO流类库 iostream fstream stringstream 后记 前言 学过C语言的输入输出相关知识点的童鞋应该多多少少会觉得有些许麻烦,反正我就是这么觉得的,scanf、printf等函数不仅数量众多&#xff0c…

统计工具更新了!一站式完成医学研究影响因素分析(线性回归法),比SPSS和R更好用...

郑老师的“风暴统计”平台更新了!接下来,我们的平台将陆陆续续形成一站式统计分析模块,包括: 影响因素分析混杂偏倚控制临床预测模型 我们也将春节后形成统计软件的PC端版本,将再也不怕宕机了! 今天我们先更…