美文网首页
三种动画

三种动画

作者: me_biubiu | 来源:发表于2019-11-04 19:53 被阅读0次

Android动画目前分为三种:

Frame Animation 帧动画,通过顺序播放一系列图像从而产生动画效果,。图片过多时容易造成OOM(Out Of Memory内存用完)异常。

Tween Animation 补间动画(又叫view动画),是通过对场景里的对象不断做图像变换(透明度、缩放、平移、旋转)从而产生动画效果,是一种渐进式动画,并且View动画支持自定义。实现原理是view.startAnimation的时候调用invalidate,view在执行draw函数的时候,通过时间差值器换算出当前动画进行的百分比,从而得到相应的动画变化Transition(getTransfomation方法),作用在画布或者RenderObject上,影响绘制的内容,在因为measure layout中都没有相应的动画改变逻辑所以实际上没有改变view的位置大小。

Animator属性动画,源码实现是,Animator在start的时候,将自己作为callback注册到单例类AnimationHandler中,而AnimationHandler想底层注册了vsync信号的监听,有vsync来刷屏幕时,会调用到Animatior的doAnimationFrame->animateBasedOnTime->animateValue()计算。在ValueAnimator中计算value调用mUpdateListeners.get(i).onAnimationUpdate(this);在ObjectValue中将value通过jni传给native方法,修改对应的对象参数。即view.setX(float value)从而产生动画效果。

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

补间动画只是改变了View的显示效果而已,并不会真正的改变View的属性。而属性动画可以改变View的显示效果和属性。举个例子:例如屏幕左上角有一个Button按钮,使用补间动画将其移动到右下角,此刻你去点击右下角的Button,它是绝对不会响应点击事件的,因此其作用区域依然还在左上角。只不过是补间动画将其绘制在右下角而已,而属性动画则不会。

帧动画和补间动画 看https://blog.csdn.net/qq475703980/article/details/93243968

属性动画看https://blog.csdn.net/weixin_39001306/article/details/80614286

源码

https://www.jianshu.com/p/27ac2a314fae

https://www.jianshu.com/p/4af641bea24d

相关文章

网友评论

      本文标题:三种动画

      本文链接:https://www.haomeiwen.com/subject/hprdbctx.html