属性动画

  • // 点击 View 会进行一个放大两倍的动画
    fun onClick(v: View) {
      v.animate().scaleY(2f)
      	.scaleX(2f)
        .start()
    }
  • 不会改变属性(即不会影响控件的测量)

Transition动画

  • // 点击 View 会进行一个放大两倍的动画
    fun onClick(v: View) {
    	TransitionManager.beginDelayedTransition(v.parent.smartCast())
        with(v.layoutParams.smartCast<LinearLayout.LayoutParams>()) {
          height *= 2
          width *= 2
        }
     
        // 手动触发页面测量
        v.requestLayout()
    }
  • 会改变属性,即达成多个 View 的联动,大部分情况更符合需求