自定义view中设置动画在适当的时候关闭

在自定义view中开启的动画,如果不做处理,在activity销毁后,依然会执行
占用资源。需要在不可见时,关闭动画;在可见时,开启动画

涉及到两个方法

  • onWindowFocusChanged(hasWindowFocus: Boolean)
  • onVisibilityChanged(changedView: View, visibility: Int)
  1. onWindowFocusChanged(hasWindowFocus: Boolean)
    当包含此视图的窗口获得或失去焦点时调用
    hasWindowFocus:true 获得焦点,开启动画;false 失去焦点,停止动画
  2. onVisibilityChanged(changedView: View, visibility: Int)
    当view或view的父级view的可见性发生更改时调用
    changedView:可见性发生变化的view。可能是本身,或者父级view
    3.onDetachedFromWindow 在view所在界面finish时调用,自此处关闭动画

思路

  1. onWindowFocusChanged()中
    hasWindowFocus为false时,暂停动画
    hasWindowFocus为true时,开启动画
  2. onVisibilityChanged()中
    visibility为INVISIBLE或GONE时,暂停动画
    visibility为VISIBLE时,开启动画
  3. onDetachedFromWindow 中调用cancel()关闭动画

属性动画
animator.pause() 暂停动画
animator.resume() 继续动画
animator.cancel() 关闭动画

问题

发现AnimatorSet 的pause()无效

你可能感兴趣的:(自定义view中设置动画在适当的时候关闭)