Android 属性动画ValueAnimator整理

news2024/9/24 9:17:50

Android 属性动画有 ObjectAnimatorAnimatorSetValueAnimator 等。

ObjectAnimator 、AnimatorSet 参考前篇 Andorid 属性动画ObjectAnimation整理_南国樗里疾的博客-CSDN博客

本篇介绍 ValueAnimator ,它本身不作用于任何对象,它是对值进行动画,我们监听这个动画的过程,在这个过程中修改对象的值,从而实现对对象的动画效果。

使用方法,

ValueAnimator animator = ValueAnimator.ofFloat(0,100f);// 1
animator.setInterpolator(new AccelerateInterpolator());// 2
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {// 3
	@Override
	public void onAnimationUpdate(ValueAnimator animation) {
  	
  	 }
});
animator.setDuration(3500).start();//4
  • 注释1处:创建一个 ValueAnimator ,让他从 0 到 100f 做动画。
  • 注释2处:设置动画插值器。
  • 注释3处:设置动画监听器,在这里监听动画过程。
  • 注释4处:设置动画时长,开始动画。

直接运行时没有效果的,要看效果就在 onAnimationUpdate 中实现,
本例实现的例子,模仿银行app ,余额滚动效果。

float text = 10800 ;

ValueAnimator animator = ValueAnimator.ofFloat(0,100f);//1
animator.setInterpolator(new AccelerateInterpolator());//2
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {//3
    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
        float fraction = (float) animation.getAnimatedFraction();// 0~1
        float curValue = (float) animation.getAnimatedValue();
        
        float cur = text * fraction ;
        DecimalFormat df = new DecimalFormat("0.##");
        String str = df.format(cur);
        mTextView.setText(str);
    }
});
animator.setDuration(3500).start();//4

相关说明:

  • animation.getAnimatedFraction() :获取动画进度,浮点型,开始是 0 ,随着动画过程逐渐增加,动画结束时是 1 。
  • animation.getAnimatedValue() :获取当前进度值,注释1处我们传入的是 (0,100f) ,所以开始是 0 ,随着动画过程逐渐增加,动画结束时是 100.0 。
  • 按照动画进度计算出对应的余额,float cur = text * fraction ,格式化输出。

效果,
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在小程序中设置导航栏文字颜色和背景颜色

不同商家有不同的颜色风格,例如有些做设计的公司,主要是黑色风格;有些卖珠宝的商家,主要是金色风格;他们的小程序,也需要进行同样的风格设定。下面具体介绍怎么在小程序中进行整个风格设定。 1. 在小程序管…

C# .net创建一个MVC框架工程

二、C# .net创建一个MVC框架工程 1.步骤 首先打开VS ,然后点击创建新项目 在三个选项框中输入我们需要的项目条件 最后一步创建完毕 创建会在资源解决方案生成如图:

Spark 9:Spark 新特性

Spark 3.0 新特性 Adaptive Query Execution 自适应查询(SparkSQL) 由于缺乏或者不准确的数据统计信息(元数据)和对成本的错误估算(执行计划调度)导致生成的初始执行计划不理想,在Spark3.x版本提供Adaptive Query Execution自适应查询技术,通过在”运行…

小说推文和短剧推广的优势和申请授权方式

小说推文和短剧推广都可以通过”巨量推文“申请授权 先说说优势,短视频赛道有很多,普遍的门槛过高,目前小说推文和短剧推广只要你有短视频账号就可以推广 相对来说门槛更低,可以”白嫖“流量来进行变现

Spring核心源码-如何解决循环依赖

假设有两个类A和B B是A的成员变量,A也是B的成员变量。 假设类A的bean为a,类B的bean为b。且IOC容器先处理A。 熟悉Spring容器初始化的同学,应该都知道,容器初始化的过程中,bean的创建是如下触发的: getBean…

Unity可视化Shader工具ASE介绍——4、ASE的自定义模板使用

大家好,我是阿赵。   继续介绍Unity可视化Shader编辑工具ASE。之前的文章介绍了在ASE里面可以选择不同的Shader类型。这一篇来继续探讨一下,这些Shader类型究竟是什么。 一、所谓的Shader类型是什么 选择不同的Shader类型,会出现不同的选项…

Unity 之 EditorGUILayout.BeginHorizontal/EndHorizontal异常报错问题

报错内容: 缘由:由于在EditorGUILayout.EndHorizontal()之前执行了类似打开窗口的逻辑 解决办法: 在EditorGUILayout.EndHorizontal()之前执行GUIUtility.ExitGUI();

vulnhub_driftingblues7靶机渗透测试

Driftingblues7靶机 文章目录 Driftingblues7靶机信息收集web渗透获取权限另外思路靶机总结 信息收集 使用nmap扫描得到靶机ip为192.168.78.174,开放发端口有很多,而且开放了443端口,所以访问网站是需要https协议的 再对该网站进行目录扫描&…

10-09 周一 图解机器学习之深度学习感知机学习

10-09 周一 图解机器学习之深度学习感知机学习 时间版本修改人描述2023年10月9日14:13:20V0.1宋全恒新建文档 简介 感知机是神经网络中的概念,1958年被Frank Rosenblatt第一次引入。感知机作为一种基本的神经网络模型,它模拟了人脑神经元的工作原理。感…

解决Feign的自定义解码器在接口返回值为void时不执行的问题

项目的接口有一个全局的响应包装器,将接口的所有返回,包括各种类型如List、Entity,或者void,以及抛出的异常,封装成统一的结构给到前端,所以在使用Feign发起远程调用的时候,需要一个自定义的解码…

详解 ElasticSearch 基础教程

🌹 分享 ElasticSearch 基础,请指教。🌹🌹 如你对技术也感兴趣,欢迎交流。🌹🌹🌹 如有对阁下帮助,请👍点赞💖收藏🐱‍🏍分…

Python 自动化Web测试

限于作者水平有限,以下内容可能是管窥之见,希望大家高抬贵手,且让我斗胆抛砖引玉。 公司产品迪备主要是通过网页操作来进行数据库的备份与恢复,监控与管理,因此在测试的过程中,可以用python测试脚本来模拟…

运维知识点汇总

一.公共基础 linux常用目录 链接一 链接二 linux系统启动 链接一 链接二 LVM 链接一 磁盘挂载 链接一 文件权限 链接一 二.VLAN详解 链接 三.中间件 单体部署: 优点: (1)小团队成型即可完成开发-测试-上线&am…

3D机器视觉:解锁未来的立体视野

原创 | 文 BFT机器人 机器视觉领域一直在不断演进,从最初的二维图像处理,逐渐扩展到了更复杂的三维领域,形成了3D机器视觉。3D机器视觉技术的涌现为计算机系统带来了全新的感知和理解能力,这一领域的发展正日益受到广泛关注。本文…

Android系统为什么采用Binder作为IPC机制

Android系统提供了多种进程间通信(IPC)的机制,用于不同进程之间的数据交换和通信。以下是Android系统中常用的几种IPC机制: Intent:Intent是Android系统中常用的一种进程间通信方式。通过发送Intent,可以在…

链表去重Java

去除掉链表中重复的元素,两种方法: static class ListNode{private int val;private ListNode next;public ListNode(int val, ListNode next) {this.val val;this.next next;}Overridepublic String toString() {return "ListNode{" "val" val ",…

【jvm】程序计数器

目录 一、介绍二、作用三、示例3.1 代码3.2 javap -v Test1.class3.2.1 操作指令及地址 一、介绍 1.jvm中的程序计数寄存器中(program counter register),register的命名源于cpu的寄存器,寄存器存储指令相关的现场信息 2.cpu只有把…

C++学习之指针和数组

指针和一维数组 一个数组包含若干元素,每个数组元素都在内存中占用存储单元,它们都有相应的地址。指针变量既可以指向变量,当然也可以指向数组元素。所谓数组元素的指针就是数组元素的地址。 eg: int a[6]; //定义一个整数数组a…

web:[HCTF 2018]admin

题目 点击页面显示如下 点击hctf显示 没有账号,先注册一个 随便注册一个试试看 输入账号密码显示如下 页面没有其他的提示,查看源代码 这里提示不是admin 先注册一个admin账号试一下 显示admin已经被注册了,所以知道用户名为admin&#xff0…

【图像分割】SAM、FastSAM与MobileSAM原理

文章目录 前言:Segment Anything一、FastSAM二、MobileSAM框架实验 总结 前言:Segment Anything Meta 今年发布了图像分割模型 Segment Anything Model (SAM) 。SAM 已经学会了关于物体的一般概念,可以为任何图像或视频中的任何物体生成 mas…