动画

Posted by OOFTF Blog on September 1, 2021

动画

  • view 的动画能超过父View 的大小吗
    • 无论是 Animator 还是 Animation 都无法超过父 View 的大小
  • 动画 会引起 onLayoutChange 吗
    • 不会
  • 动画 是什么时候开始播放的?
    • view.postOnAnimation(); 中执行的
  • 缩放动画后

    属性动画 Animator

ViewPropertyAnimator、ObjectAnimator、ValueAnimator PropertyValuesHolder 同一个动画中改变多个属性

ValueAnimator 是 ObjectAnimator 的父类。ObjectAnimator 是自动调用目标对象的 setter 方法来更新目标属性的值,以及很多的时候还会以此来改变目标对象的 UI,而 ValueAnimator 只是通过渐变的方式来改变一个独立的数据,至于在数据更新后要做什么事,全都由你来定,你可以依然是去调用某个对象的 setter 方法,也可以做其他的事,不管要做什么,都是要你自己来写的,ValueAnimator 不会帮你做。功能最少、最不方便,但有时也是束缚最少、最灵活。比如有的时候,你要给一个第三方控件做动画,你需要更新的那个属性没有 setter 方法,只能直接修改,这样的话 ObjectAnimator 就不灵了啊。怎么办?这个时候你就可以用 ValueAnimator,在它的 onUpdate() 里面更新这个属性的值,并且手动调用 invalidate()。

https://rengwuxian.com/ui-1-7/

设置ScaleX 和 ScaleY 的锚点 使用 setPivotX setPivotY,如果使用 setPivot 的时候当前 scale 不是1,就会产生位移,因为 setPivot 会影响之前的 scale

补间动画 Animation

  • AlphaAnimation
  • AnimationSet
  • RotateAnimation
  • ScaleAnimation
  • TranslateAnimation

属性

fillAfter : true 动画结束后保留变换之后的样子,false:会回到最初的样子;默认 false