当前位置: 首页 > news >正文

Android属性动画-ValueAnimator

ValueAnimator 类用于产生属性动画值。它并不会把值应用到要添加动画的对象上,因此我们需要自行监听由它产生的值,然后根据自己的需求把值应用到要添加动画的对象上。ValueAnimator 可以对int、float、颜色以及自定义类型的值进行计算。

使用:

  • 用 ValueAnimator 的工厂方法ofFloat()ofInt()ofObject()等创建对象,方法的参数指定动画的路径。例如ofFloat(0f, 100f, 50f)就是指定动画的值从0f开始,经过100f,最后到50f结束;当然也可以通过new ValueAnimator()创建对象,再用setFloatValues()指定动画路径(ofFloat()源码就是这么干的)

  • setDuration()指定动画时长;若在动画运行中调用setDuration(),动画会继续运行且剩余运行时长 = 新时长 - 已运行时长,如果已运行时长大于新时长则动画结束

  • start()启动动画;若动画正在运行或已经结束,再调用start()会使动画从头重新开始

  • setStartDelay()指定动画在调用start()之后延迟多长时间再开始运行

  • setCurrentFraction()修改动画进度;动画运行前setCurrentFraction()会使动画一start()就马上从指定进度开始运行,忽略设置的startDelay;动画运行中setCurrentFraction()会使动画从指定进度继续运行

  • setCurrentPlayTime()效果与setCurrentFraction()差不多,只不过前者是基于动画总时长计算后修改动画进度(源码里setCurrentPlayTime()就是去调用setCurrentFraction()实现的);同样,动画运行前setCurrentPlayTime()会使动画一start()就马上从指定播放时间开始运行,忽略设置的startDelay;动画运行中setCurrentPlayTime()会使动画从指定播放时间继续运行

  • setInterpolator()设置动画的插值器,默认是AccelerateDecelerateInterpolator(开始慢,中间快,结束慢),还有LinearInterpolator(匀速)、AccelerateInterpolator(开始慢,逐渐加速)、DecelerateInterpolator(开始快,逐渐减速)等等,还可通过实现TimeInterpolator接口来自定义插值器

  • setEvaluator()设置动画的Evaluator(可译为"求值器"),用于告知属性动画系统如何计算指定属性的值,有IntEvaluatorFloatEvaluatorArgbEvaluator(用于计算颜色属性的值),或通过实现TypeEvaluator来自定义Evaluator

  • setFloatValues()等方法修改动画路径;动画运行中setFloatValues()不会打断动画,而是保持动画进度不变,从新路径中原动画进度的位置继续运行

  • setRepeatCount()指定动画重复次数,默认0(不重复),还可以指定INFINITE(无限次重复)

  • setRepeatMode()指定动画重复方式,默认RESTART(从头播放),还可以指定REVERSE(反向播放)

  • addListener()监听onAnimationStart()onAnimationEnd()onAnimationCancel()onAnimationRepeat()回调

  • addUpdateListener()监听onAnimationUpdate()回调,这个最常用,用来监听ValueAnimator当前计算出的值并应用到要添加动画的对象上,示例:

    animator.addUpdateListener(newValueAnimator.AnimatorUpdateListener(){@OverridepublicvoidonAnimationUpdate(ValueAnimatoranimation){floatanimatedValue=(float)animation.getAnimatedValue();textView.setTranslationX(animatedValue);}});
  • addPauseListener()监听onAnimationPause()onAnimationResume()回调

  • pause()暂停动画;resume()恢复动画

  • cancel()使动画在当前进度结束,并会收到onAnimationCancel()回调;end()使动画直接跳至动画路径的终点结束(能收到终点处的onAnimationUpdate()回调);无论用cancel()还是end()结束动画,都会收到onAnimationEnd()回调

  • isStarted返回动画是否已经start(),startDelay期间为true;isRunning()返回动画是否正在运行,startDelay期间为false

http://www.jsqmd.com/news/1187410/

相关文章:

  • 未来展望:SharpEDRChecker路线图与Unix平台移植计划详解
  • 持续学习中的提示调优:Awesome-Prompt-Adapter-Learning-for-VLMs-CLIP中的L2P与DualPrompt方法
  • 洗眼器生产厂家避坑指南,2026综合口碑榜单价格透明之选 - mypinpai
  • 面试知识点梳理及相关面试题(十三)-- nginx
  • 积家中国官方售后服务网络全指南|官方售后电话及地址权威公告(2026年7月最新) - 积家中国服务中心
  • 抖音无水印下载器:3分钟搞定高清视频批量保存
  • 3 步完整流程|企业注销怎么办理|省时省力的关键在“慧办好”! - 慧办好
  • 抖音内容自动化管理解决方案:从手动保存到批量下载的技术实践
  • 基于LTC6904与STM32的高精度方波发生器设计
  • 5分钟将Photoshop升级为AI绘画神器:SD-PPP插件完全指南
  • MSP430FR2522/FR2512低功耗MCU外设实战:ADC、RTC、CapTIvate与GPIO配置指南
  • 颠覆性视角:如何用Mermaid Live Editor重塑技术文档工作流
  • PaintingLight参数详解:7个关键参数如何影响光照效果
  • 2026美妆培训实力口碑榜,备婚新人照着选不踩坑,避坑指南 - mypinpai
  • 万国中国区官方售后服务中心|官方网站权威公布(2026年7月最新) - 万国中国服务中心
  • 【一线大厂Java面试题合集】第46篇-Spring-Boot自动配置原理
  • VisualCppRedist AIO:终极Windows DLL修复工具完全指南
  • 【小程序课程设计/毕业设计】宠物健康数据记录与养护提醒系统设计 多宠物信息统一管理 Android APP 的设计与实现【附源码、数据库、万字文档】
  • 嵌入式通信系统硬件选型与优化实践
  • 5分钟搞定OBS直播字幕:免费插件让你的直播更专业
  • 用 AI 构建自适应 UI:从设备信息到布局策略的智能决策
  • 积家中国大陆官方售后服务中心|全新维修地址及客服电话权威公示(2026年7月最新) - 积家中国服务中心
  • 如何高效获取财经数据:AKShare完整指南与实用技巧
  • 2026 年帝舵全国售后维保网点资质核验通告(更新官方客服专线线下门店地址) - 帝舵官方维修中心
  • ChatGPT不是万能钥匙:识别你的角色标签——教师/写作者/工程师/销售/HR,匹配度自测指南
  • 微信聊天记录如何永久保存?WeChatMsg开源工具让数字记忆永不丢失
  • 2026年二季度温度隔离器品牌格局与工业监测仪表市场解析 - 仪表人老张
  • LPrint跨平台标签打印完整解决方案:专业级标签打印机统一管理平台
  • 万国中国官方售后服务网络全指南|官网认证地址及电话全新启用(2026年7月最新) - 万国中国服务中心
  • 2026年值得信赖的海外广告代投放公司推荐,体验服务品质之选 - mypinpai