Android属性动画实现原理

本文介绍了属性动画的工作原理,即在一定时间内改变值并赋给对象属性以实现动画。还阐述了ValueAnimator和ObjectAnimator的实现方式,前者需手动赋值,后者自动赋值。同时说明了主要方法、估值器和插值器的作用,以及使用ObjectAnimator时对象属性需有get()和set()方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工作原理:在一定时间间隔内,通过不断对值进行改变,并不断将该值赋给对象的属性,从而实现该对象在该属性上的动画效果

在这里插入图片描述

ValueAnimator:通过不断控制值的变化(初始值->结束值),将值手动赋值给对象的属性,再不断调用View的invalidate()方法,去不断onDraw重绘view,达到动画的效果。

主要的三种方法:
ValueAnimator.ofInt(int values):估值器是整型估值器IntEaluator

ValueAnimator.ofFloat(float values):估值器是浮点型估值器FloatEaluator

ValueAnimator.ofObject(ObjectEvaluator, start, end):将初始值以对象的形式过渡到结束值,通过操作对象实现动画效果,需要实现Interpolator接口,自定义估值器

估值器TypeEvalutor,设置动画如何从初始值过渡到结束值的逻辑。插值器(Interpolator)决定值的变化模式(匀速、加速等);估值器(TypeEvalutor)决定值的具体变化数值。

自定义估值器,需要实现TypeEvaluator接口

 public class ObjectEvaluator implements TypeEvaluator{  

 复写evaluate(),在evaluate()里写入对象动画过渡的逻辑
@Override  
public Object evaluate(float fraction, Object startValue, Object endValue) {  
    // 参数说明
    // fraction:表示动画完成度(根据它来计算当前动画的值)
    // startValue、endValue:动画的初始值和结束值

    ... // 写入对象动画过渡的逻辑
    
    return value;  
    // 返回对象动画过渡的逻辑计算后的值
} 

ObjectAnimator:直接对对象的属性值进行改变操作,从而实现动画效果
ObjectAnimator继承自ValueAnimator类,底层的动画实现机制还是基本值的改变。它是不断控制值的变化,再不断自动赋给对象的属性,从而实现动画效果。这里的自动赋值,是通过调用对象属性的set/get方法进行自动赋值,属性动画初始值如果有就直接取,没有则调用属性的get()方法获取,当值更新变化时,通过属性的set()方法进行赋值。每次赋值都是调用view的postInvalidate()/invalidate()方法不断刷新视图(实际调用了onDraw()方法进行了重绘视图)
如果采用ObjectAnimator类实现动画,操作的对象的属性必须有get()和set()方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值