Android属性动画 Keyframe

article/2025/5/4 17:21:57

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/118963313
本文出自【赵彦军的博客】

文章目录

  • KeyFrame
  • 实战

KeyFrame

KeyFrame 主要用于自定义控制动画速率,KeyFrame 直译过来就是关键帧。

而关键帧这个概念是从动画里学来的,一个关键帧必须包含两个原素,第一时间点,第二位置。所以这个关键帧是表示的是某个物体在哪个时间点应该在哪个位置上。

比如我们要让一个球在 30 秒时间内,从(0,0)点运动到(300,200)点,那 flash 是怎么来做的呢,在 flash 中,我们只需要定义两个关键帧,在动画开始时定义一个,把球的位置放在(0,0)点;在 30 秒后,再定义一个关键帧,把球的位置放在(300,200)点。在动画 开始时,球初始在是(0,0)点,30 秒时间内就 adobe flash 就会自动填充,把球平滑移动到第二个关键帧的位置(300,200)点;

KeyFrame 使用流程如下:

Keyframe frame0 = Keyframe.ofFloat(0f, 0);  
Keyframe frame1 = Keyframe.ofFloat(0.1f, -20f);  
Keyframe frame2 = Keyframe.ofFloat(1, 0);  
PropertyValuesHolder frameHolder = PropertyValuesHolder.ofKeyframe("rotation",frame0,frame1,frame2);  Animator animator = ObjectAnimator.ofPropertyValuesHolder(mImage,frameHolder);  
animator.setDuration(1000);  
animator.start(); 

Keyframe 使用其实很简单,只需要三步:

第一步,生成 Keyframe 对象;
第二步,利用 PropertyValuesHolder.ofKeyframe()生成 PropertyValuesHolder对象
第三步,ObjectAnimator.ofPropertyValuesHolder()生成对应的 Animator

注意:在设置ObjectAnimator.ofPropertyValuesHolder()时

  1. 如果去掉第 0 帧【Keyframe.ofFloat(0f, 0); 】,将以传入的第一个关键帧为起始位置
  2. 如果去掉结束帧【Keyframe.ofFloat(1f,0);】,将以传入最后一个关键帧为结束位置
  3. 使用 Keyframe 来构建动画,至少要有两个或两个以上帧。

实战

val key1 = Keyframe.ofFloat(0f, 0f)
val key2 = Keyframe.ofFloat(0.2f, 600f)
val key3 = Keyframe.ofFloat(0.5f, 50f)
val key4 = Keyframe.ofFloat(1f, 300f)val holder = PropertyValuesHolder.ofKeyframe("translationX", key1, key2, key3, key4)
var rotation = ObjectAnimator.ofPropertyValuesHolder(myView, holder)
rotation.duration = 3000
rotation.start()
  • key1: (0,0) 第一个关键帧,也就是动画开始的位置
  • key2:(0.2,600f) 第二个关键帧,也就是在时间的进行到 20% 的时候,要在 600 的位置
  • key3:(0.5,50) 第三个关键帧,在时间进行到一半的时候,在 50 的位置
  • key4:(1,300) 第四个关键帧,也是最后一个关键帧,就是动画结束的时候,在 300 的位置

效果如下:
在这里插入图片描述

文章来源:https://blog.csdn.net/zhaoyanjun6/article/details/118963313
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://chatgpt.dhexx.cn/article/hRVbo4hb.shtml

相关文章

ORB-SLAM2代码详解05: 关键帧KeyFrame

pdf版本笔记的下载地址: ORB-SLAM2代码详解05_关键帧KeyFrame,排版更美观一点,这个网站的默认排版太丑了(访问密码:3834) ORB-SLAM2代码详解05: 关键帧KeyFrame 各成员函数/变量共视图: mConnectedKeyFrameWeights基于对地图点的观测重新构造…

@keyframes详解

一、transform 和keyframes动画的区别: keyframes动画是循环的,而transform 只执行一遍. 二、keyframes CSS3中添加的新属性animation是用来为元素实现动画效果的,但是animation无法单独担当起实现动画的效果。承载动画的另一个属性——keyfr…

KeyFrame类

关键帧类主要是进行Covisbility Graph, Essential,Spanning Tree 三个图的维护,更新。 其中不涉及关键帧的筛选策略问题,只设置了剔除某关键帧和剔除关键帧后如何更新图的方法。总体来说,不难理解。 PS:本文设计多线程…

自定义控件三部曲之动画篇(八)——PropertyValuesHolder与Keyframe

前言:只有比牛人跑的更快,才有可能追上他的脚步。 相关文章: 《Android自定义控件三部曲文章索引》:http://blog.csdn.net/harvic880925/article/details/50995268 前几篇给大家讲了ValueAnimator、ObjectAnimator的知识,讲解了…

ORB-SLAM2从理论到代码实现(十四):KeyFrame类

1. 原理分析 KeyFrame为关键帧,关键帧之所以存在是因为优化需要,所以KeyFrame的几乎所有内容都是位优化服务的。该类中的函数较多,我们需要归类梳理一下,明白其功能原理,才能真正弄懂它的内容。 图优化需要构建节点和…

css基础(九)--keyframe

33.keyframe 关键帧,类似于flash中的关键帧,以keyframes开头紧跟着动画名称加上花括号{。。。},括号中表示不同时间段样式规则 keyframes changecolor{ 0%{ background: red; } 100%{ background: green; } } 样式规…

windows10 企业版 ltsc系统的激活

具体步骤参考下面的网址内容: https://www.landiannews.com/archives/51131.html

win10哪个版本最好用,推荐win10企业版LTSC

win10企业版LTSC又被称为win10企业版2019长期服务版本,这个版本小编认为是目前最好用的win10版本,在win10企业版2016长期服务版本的基础上,微软做了大量优化和升级。win10企业版LTSC更加快捷和轻便。 现在很多网站上都是有人修改过的win10企业版LTSC安装…

一键解决Win10 LTSC 2021官方镜像存在的问题

一键解决Win10 LTSC 2021官方镜像存在的问题 由于适用了win10 ltsc 2021之后,发现官方镜像存在一些致命的bug。但是本人又喜欢这个官方精简的系统,所以进行了一些修复。并将搜集到的办法其汇总成一个一键修复脚本 Win10_LTSC_2021_FixPacks。来让其他用户…

Windows:MULTIPROCESSOR CONFIGURATION NOT SUPPORTED蓝屏(32位(win10/LTSC 2019/LTSC 2021))

网上的答案帮助不大,全靠摸索,记录一下 Content 1.环境2.案发现场(bushi3.解决方案 1.环境 所有32位win10操作系统应该都有这个问题(旧版没装过),我的配置: CPU: i5 2400主板:戴尔DELL H61内存8G(没必要关…

win10ltsc转版本,win10ltsc升级win11,无损

之前电脑有些卡,一时兴起,就装了比较精简的ltsc,一开始还挺好用。但后来用着用着发现确实少了很多东西,地图,相机,商店什么的都没了。后来又索性加装了一根内存条。 但是ltsc上的文件我又不想丢&#xff0…

[篇五章二]_使用 USB 系统安装盘在真机上安装激活 Windows 10 LTSC 2021 中文企业版系统

################################################## 目录 使用系统盘在真机上安装激活 Windows 10 操作系统 启动盘真机安装 Win 10 图文教程 烧录系统盘 插入开机 安装前设置 重要的分区 安装后设置 安装成功! 关于 Windows 10 处于通知模式如何处理 …

Windows 10 Enterprise LTSC 2019 (x64) 版本 (安装+激活+添加系统邮箱)

1. 网站 https://msdn.itellyou.cn/ 下载。 2. 制作U盘启动,注意采用UEFIGPT模式,为什么呢,见链接https://blog.csdn.net/yang2716210363/article/details/78581388。 3. 装好后激活。 https://pan.baidu.com/s/1Zxy-kJHNOHbvLxc47wBs0Q c…

激活出现 错误0x800706F7 占位程序接收到错误数据

KMS 错误0x800706F7 占位程序接收到错误数据 (SWbemObjectEx) 解决办法: 退出360安全卫士。

windows10 提示系统激活失败,报错为:激活错误0xcc004f012

前因 买的笔记本有正版 win10 激活,但因为自己要往 c 盘复制东西改了 System32 文件的一些权限,后发现系统显示激活失败,错误代码为 0xcc004f012。 做法 WIN R 输入 services.msc 找到 Software Protection 服务 当时发现服务为停止状态&…

Microsoft Office 2021 LTSC 专业激活版 win/mac版

Office 2021它包含了Word、Excel、PowerPoint、Outlook、OneNote、Publisher以及Access等应用程序。这些应用程序都是专门为帮助用户轻松处理各种办公任务而设计的。 其中,Word是一款强大的文字处理软件,可以帮助用户创建和编辑文档;Excel是…

win10LTSC(企业版)命令激活

使用管理员权限依次复制粘贴 slmgr.vbs -skms zh.us.to slmgr -ipk M7XTQ-FN8P6-TTKYV-9D4CC-J462D slmgr -skms kms.03k.org slmgr -ato

聚类分析实验报告作业

课程《生物数据处理》 老师:邓阳君老师 要求:请采用 k 均值 、 k 中心点、层次聚类或者模糊聚类等对 iris 数据 进行聚类分析, 并评价其效果。实验报告应包括算法理论知识、算法代码、仿真实验结果及其分析等内 容,请于 5 …

聚类分析在SPSS上的实现与结果分析——基于SPSS实验报告

实验目的 通过本次实验学习聚类分析在SPSS软件中的具体操作方法,包括系统聚类法和K-means聚类这两种方法,同时根据实验目的自己判断方法的适用情况选取最优方法完成聚类分析达到聚类的目的,并做出综合的评价。 实验步骤及过程: …

01 数字图像基本操作——图像采样、量化、算术运算、点运算实验结果及分析

04 数字图像技术——图像特征提取之实验结果与分析 03 数字图像技术——频域滤波实验结果与分析 02 数字图像技术——颜色空间转换与颜色空间分割实验结果与分析 01 数字图像基本操作——图像采样、量化、算术运算、点运算实验结果及分析 一、实验目的和要求 1.掌握Anaconda中搭…