aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/kotlin/ca/allanwang/kau/utils/TransitionUtils.kt
diff options
context:
space:
mode:
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.kt43
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