动画

是什么
view的属性平滑的过渡

属性动画

补间动画与属性动画的区别

https://juejin.im/post/5b0e852b6fb9a00a0b150ca8
https://juejin.im/post/5d04610be51d45775a700309#heading-3
https://juejin.im/post/5d09990bf265da1bd260ef52

补间动画

Animation animation = AnimationUtils.loadAnimation(mContext, R.anim.alpha_anim);
img = (ImageView) findViewById(R.id.img);
img.startAnimation(animation);

原理分析

https://blog.csdn.net/anhenzhufeng/article/details/80775824

补间动画的核心本质就是在一定的持续时间内,不断改变 Matrix 变换,并且不断刷新的过程。

操纵的是canvas,没有改变view的位置,宽高

            canvas.translate(-transX, -transY);
            canvas.concat(transformToApply.getMatrix());//在这里调用canvas的concat方法,实现最终的平移效果 (做矩阵相乘)
            canvas.translate(transX, transY);

applyLegacyAnimation()

记录动画第一帧的时间
根据当前时间到动画第一帧的时间这之间的时长和动画应持续的时长来计算动画的进度
把动画进度控制在 0-1 之间,超过 1 的表示动画已经结束,重新赋值为 1 即可
根据插值器来计算动画的实际进度
调用 applyTransformation() 应用动画效果

Choreographer.doCallbacks

三种不同类型的操作(输入,动画,遍历)

doAnimationFrame()方法

为什么补间动画只是改变view的视觉,他本来也就是仅仅改变了view的canvas中的bitmap(区域)而已.

属性动画
ObjectAnimator anim = ObjectAnimator.ofFloat(myView, “rotation”, 0f, 360f);
anim.setDuration(1000);
anim.start();

ValueAnimator
TimeInterpolator 决定了动画从初始值过渡到结束值的节奏
TypeEvaluator 决定了动画如何从初始值过渡到结束值。

alpha
scaleX
scaleY
translationX
translationY

AnimatorSet set = new AnimatorSet();

著名的开源库:lottie-android

转场动画

在Android 5.0当中,Google基于Android 4.4中的Transition框架引入了转场动画,
设计转场动画的目的,在于让Activity之间或者Fragment之间的切换更加自然,
其根本原因在于界面间切换时的动画不再是以Activity或者Fragment的整个布局作为切换时动画的执行单元,而是将动画的执行单元细分到了View。

目前提供的转场动画分为两种:
Content Transition:用于两个界面之间非共享的View。
Shared Element Transition:用于两个界面之间需要共享的View
https://www.jianshu.com/p/510e415c56f2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值