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)}}
}
使用
-
将 CubicBezierInterpolators.kt 类Copy到你项目中。
-
使用如下:
val animator: ObjectAnimator = ObjectAnimator.ofFloat(yourView, "translationX", 0, 500)
animator.duration = 1000
animator.interpolator = CubicBezierInterpolators.Type.EASE.create()
animator.start()
DEMO
- Demo.apk 点击下载
- Demo的Gif效果图
项目和演示效果可以去Github查看
项目地址: https://github.com/logan0817/CubicBezierAndroidInterpolators 。
感谢
http://yisibl.github.io/cubic-bezier/#.25,.1,.25,1
如果你有任何疑问可以留言。
如果这篇文章对你有帮助,可以赏个赞支持一下作者。
相关文章:
Interpolator:在Android中方便使用一些常见的CubicBezier贝塞尔曲线动画效果
说明 方便在Android中使用Interpolator一些常见的CubicBezier贝塞尔曲线动画效果。 示意图如下 import android.view.animation.Interpolator import androidx.core.view.animation.PathInterpolatorCompat/*** 参考* android https://yisibl.github.io/cubic-bezier* 实现常…...
Nacos安装,服务注册,负载均衡配置,权重配置以及环境隔离
1. 安装 首先从官网下载 nacos 安装包,注意是下载 nacos-server Nacos官网 | Nacos 官方社区 | Nacos 下载 | Nacos 下载完毕后,解压找到文件夹bin,文本打开startup.cmd 修改配置如下 然后双击 startup.cmd 启动 nacos服务,默认…...
Vue3导出数据为txt文件
在Vue3中,可以通过使用Blob对象以及URL.createObjectURL()方法导出txt文档。 首先,你需要在Vue组件中创建一个方法来生成txt文档的内容。 //res.value.code 数据源 //type:格式设置 //form.name是下载文件的自定义名字 const downLoad ()&…...
Simulink中getConfigSet用法
目录 语法 说明 示例 获取配置集 getConfigSet的功能是从模型中获取配置集或配置引用。 语法 myConfigObj getConfigSet(model, configObjName) 说明 myConfigObj getConfigSet(model, configObjName) 返回关联到 model 并命名为 configObjName 的配置集或配置引用。 …...
【Algorithms 4】算法(第4版)学习笔记 05 - 2.2 归并排序
文章目录 前言参考目录学习笔记1:归并排序的简单演示1.1:基本思路1.2:归并排序的 demo 演示1.3:代码实现2:自顶向下的归并排序2.1:比较次数与访问次数的证明2.2:代码优化2.3:优化后代…...
mybatis mapper sql include用法实现sql块复用
一、总SQL <select id"getxxxMonitorData"resultType"com.xxx.module.system.dal.dataobject.xxx.xxxDO"><include refid"getxxxMonitorDataBaseSql"></include><include refid"whereContent"></include&…...
正点原子--STM32通用定时器学习笔记(2)
1. 通用定时器输入捕获部分框图介绍 捕获/比较通道的输入部分(通道1) 采样频率:控制寄存器 1(TIMx_CR1)的CKD[1:0] ⬇⬇⬇滤波方式选择: 捕获/ 比较模式寄存器 1(TIMx_CCMR1)的输入捕获部分⬇⬇…...
Flask实现异步调用sqlalchemy的模型类
事情是这样的,我这边需要在一次请求里面,搞一个异步不阻碍的任务,来执行耗时的操作。 一开始,我准备写的代码是这样的: from flask import Flask import time from concurrent.futures import ThreadPoolExecutorexec…...
Pocket2Mol + Generation of Atom Positions生成原子位置的方法有什么?联合概率是什么?
联合概率: 联合概率是统计学中的一个概念,用于描述两个或多个随机事件同时发生的概率。当我们谈论多个变量的联合概率时,我们是在探讨这些变量同时取特定值的概率。 让我们简化一下概念: 假设你有一个骰子(六面&…...
区分手机小程序以及电脑小程序;左滑、导航键返回拦截
1、区分电脑小程序和手机小程序 //区分电脑小程序、手机小程序(目标:手机小程序) // #ifdef MP-WEIXIN uni.getSystemInfo({success: (res) > {// windows | mac为pc端// android | ios为手机端// console.log(getSystemInfo,, res.plat…...
Web APIs 2 事件
Web APIs 2 事件 事件监听案例:广告关闭案例:随机问答 事件监听版本事件类型案例:轮播图完整焦点事件键盘事件输入事件案例:评论字数统计 事件对象获取事件对象事件对象常用属性案例:评论回车发布 环境对象this回调函数…...
网易腾讯面试题精选----90道设计模式面试题及答案
介绍 设计模式是软件开发的重要组成部分,为常见设计问题提供经过验证的解决方案。就设计模式面试候选人可以帮助衡量他们对软件架构的理解、解决问题的能力以及编写可维护和可扩展代码的能力。以下是一些常见的设计模式面试问题和答案,可帮助评估候选人在该领域的知识和专业知…...
程序员的数字化工作台:理解不关机背后的逻辑与需求
目录 程序员为什么不喜欢关电脑? 电脑对程序员的重要性: 工作流程与需求: 数据安全与备份: 即时性与响应: 个人习惯等方面: 程序员为什么不喜欢关电脑? 电脑对程序员的重要性:…...
Java Socket Server TCP服务端向指定客户端发送消息
实现思路 首先需要知道java里如何创建一个Socket服务器端。 //创建一个服务器端对象ServerSocket server new ServerSocket(); //绑定启动的ip和端口号server.bind(new InetSocketAddress("127.0.0.1",8082));//启动成功后,调用accept()方法阻塞…...
java日志框架总结(五、logback日志框架)
一、logback概述 Logback是由log4j创始人设计的又一个开源日志组件。 Logback当前分成三个模块: 1、logback-core, 2、logback- classic 3、logback-access。 1)logback-core是其它两个模块的基础模块。 2)logback-…...
android下library打包aar并上传到maven,嵌入版的app
android嵌入版 准备工作简化代码到三方app上传maven自动打包上面已经完成了library到三方app的流程 这几天在研究android下怎么把自己的项目当作一个library给到另一个app做嵌入使用,把这些记录下来,方便以后参考 准备工作 1.需要了解一些gradle 命令打…...
Xampp中Xdebug的安装使用
工欲善其事,必先利其器 XDebug简介 XDebug 是一个用于 PHP 的调试和性能分析工具。它提供了一系列功能,帮助开发者在开发和调试 PHP 应用程序时更加高效。 以下是 XDebug 的一些主要特性和功能: 调试功能: 断点调试:…...
金融行业的软件测试分析
随着金融行业的业务不断增加,金融交易模式的不断变化,金融机构对信息化的要求也越来越高,高质量的金融软件对于金融机构来说显得尤为重要。如何保证金融行业软件的质量,对金融行业软件的测试人员来说,也提出了更高的要…...
踩坑了,MySQL数据库生成大量奇怪的大文件
作者:田逸(formyz) 一大早就收到某个数据库服务器磁盘满的报警信息,其中数据盘使用率超过90%,如下图所示。 这是一台刚上线不久的MySQL从库服务器,数据盘的总容量是300G。先登录系统,查看主从同…...
ctfshow-web11~20-WP
web11 根据提示,查询对ctfshow域名进行dns查询,查看TXT记录 阿里云查询链接:阿里云网站运维检测平台 获取flag成功 web12 根据题目提示,我们访问robots.txt,获取到后台地址 然后我们访问一下后台...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
关于uniapp展示PDF的解决方案
在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项: 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库: npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...
Vue 3 + WebSocket 实战:公司通知实时推送功能详解
📢 Vue 3 WebSocket 实战:公司通知实时推送功能详解 📌 收藏 点赞 关注,项目中要用到推送功能时就不怕找不到了! 实时通知是企业系统中常见的功能,比如:管理员发布通知后,所有用户…...
基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究
摘要:在消费市场竞争日益激烈的当下,传统体验营销方式存在诸多局限。本文聚焦开源AI智能名片链动2 1模式S2B2C商城小程序,探讨其在沉浸式体验营销中的应用。通过对比传统品鉴、工厂参观等初级体验方式,分析沉浸式体验的优势与价值…...
