react-native-navigation的迁移库

YAnimator.kt 1.0KB

1234567891011121314151617181920212223242526272829
  1. package com.reactnativenavigation.views.element.animators
  2. import android.animation.Animator
  3. import android.animation.ObjectAnimator
  4. import android.view.View
  5. import android.view.View.TRANSLATION_Y
  6. import android.view.ViewGroup
  7. import com.facebook.react.views.text.ReactTextView
  8. import com.reactnativenavigation.parse.SharedElementTransitionOptions
  9. import com.reactnativenavigation.utils.ViewUtils
  10. class YAnimator(from: View, to: View) : PropertyAnimatorCreator<View>(from, to) {
  11. private val dy: Int
  12. init {
  13. val fromXy = ViewUtils.getLocationOnScreen(from)
  14. val toY = (to.layoutParams as ViewGroup.MarginLayoutParams).topMargin
  15. dy = fromXy.y - toY
  16. to.pivotY = 0f
  17. }
  18. override fun shouldAnimateProperty(fromChild: View, toChild: View) = dy != 0
  19. override fun excludedViews() = listOf(ReactTextView::class.java)
  20. override fun create(options: SharedElementTransitionOptions): Animator {
  21. return ObjectAnimator.ofFloat(to, TRANSLATION_Y, dy.toFloat(), 0f).setDuration(options.getDuration())
  22. }
  23. }