diff options
Diffstat (limited to 'core/src/main/kotlin/ca/allanwang/kau/utils/TransitionUtils.kt')
-rw-r--r-- | core/src/main/kotlin/ca/allanwang/kau/utils/TransitionUtils.kt | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/core/src/main/kotlin/ca/allanwang/kau/utils/TransitionUtils.kt b/core/src/main/kotlin/ca/allanwang/kau/utils/TransitionUtils.kt index 9e668d0..fa062f7 100644 --- a/core/src/main/kotlin/ca/allanwang/kau/utils/TransitionUtils.kt +++ b/core/src/main/kotlin/ca/allanwang/kau/utils/TransitionUtils.kt @@ -1,11 +1,19 @@ package ca.allanwang.kau.utils -import android.support.transition.Transition -import android.support.transition.TransitionSet +import android.os.Build +import android.support.annotation.RequiresApi +import android.support.annotation.TransitionRes +import android.support.transition.AutoTransition +import android.support.transition.TransitionInflater +import android.support.transition.TransitionManager +import android.support.transition.Transition as SupportTransition +import android.transition.Transition +import android.view.ViewGroup /** * Created by Allan Wang on 2017-06-24. */ +@RequiresApi(Build.VERSION_CODES.LOLLIPOP) class TransitionEndListener(val onEnd: (transition: Transition) -> Unit) : Transition.TransitionListener { override fun onTransitionEnd(transition: Transition) = onEnd(transition) override fun onTransitionResume(transition: Transition) {} @@ -14,6 +22,35 @@ class TransitionEndListener(val onEnd: (transition: Transition) -> Unit) : Trans override fun onTransitionStart(transition: Transition) {} } -@KauUtils fun TransitionSet.addEndListener(onEnd: (transition: Transition) -> Unit) { +@RequiresApi(Build.VERSION_CODES.LOLLIPOP) +@KauUtils fun Transition.addEndListener(onEnd: (transition: Transition) -> Unit) { addListener(TransitionEndListener(onEnd)) +} + +@RequiresApi(Build.VERSION_CODES.LOLLIPOP) +class SupportTransitionEndListener(val onEnd: (transition: SupportTransition) -> Unit) : SupportTransition.TransitionListener { + override fun onTransitionEnd(transition: SupportTransition) = onEnd(transition) + override fun onTransitionResume(transition: SupportTransition) {} + override fun onTransitionPause(transition: SupportTransition) {} + override fun onTransitionCancel(transition: SupportTransition) {} + override fun onTransitionStart(transition: SupportTransition) {} +} + +@RequiresApi(Build.VERSION_CODES.LOLLIPOP) +@KauUtils fun SupportTransition.addEndListener(onEnd: (transition: SupportTransition) -> Unit) { + addListener(SupportTransitionEndListener(onEnd)) +} + +@KauUtils fun ViewGroup.transitionAuto(builder: AutoTransition.() -> Unit = {}) { + if (!buildIsLollipopAndUp) return + val transition = AutoTransition() + transition.builder() + TransitionManager.beginDelayedTransition(this, transition) +} + +@KauUtils fun ViewGroup.transitionDelayed(@TransitionRes id: Int, builder: android.support.transition.Transition.() -> Unit = {}) { + if (!buildIsLollipopAndUp) return + val transition = TransitionInflater.from(context).inflateTransition(id) + transition.builder() + TransitionManager.beginDelayedTransition(this, transition) }
\ No newline at end of file |