Android源码 --- 动画分析

动画

本篇记录属性动画执行的原理,本来想通过查看动画相关的源码了解动画执行的原理,没想到后面涉及的东西会越来越多

通过阅读动画相关源码你会了解一下知识:
屏幕刷新原理、Choreographer、VSync,我是看完源码后又看了 胡飞洋 Android屏幕刷新机制—VSync、Choreographer 才大概理解的,还涉及到插值器、估值器。

属性动画

首先ObjectAnimator继承自ValueAnimator,而ValueAnimator也是对动画每个时间点上值处理的关键类。
其大概原理就是 通过ofInt、ofFloat、ofArgb等将属性以及对应的值保存到PropertyValuesHolder中,然后PropertyValuesHolder通过反射将属性值注入到target中,等接收到 VSync 信号,刷新屏幕,就会通过注入的属性值改变 target,形成动画。

从ObjectAnimator的start方法进入会走到ValueAnimator的start方法中

    private void start(boolean playBackwards) {
   
        if (Looper.myLooper() == null) {
   
            throw new AndroidRuntimeException("Animators may only be run on Looper threads");
        } else {
   
            this.mPlayingBackwards = playBackwards;
            this.mCurrentIteration = 0;
            this.mPlayingState = 0;
            this.mStarted = true;
            this.mStartedDelay = false;
            ValueAnimator.AnimationHandler animationHandler = this.getOrCreateAnimationHandler();
            animationHandler.mPendi
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值