aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackHelper.kt
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackHelper.kt')
-rw-r--r--core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackHelper.kt29
1 files changed, 25 insertions, 4 deletions
diff --git a/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackHelper.kt b/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackHelper.kt
index 0039687..92cdd7c 100644
--- a/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackHelper.kt
+++ b/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackHelper.kt
@@ -1,6 +1,7 @@
package ca.allanwang.kau.swipe
import android.app.Activity
+import ca.allanwang.kau.R
import ca.allanwang.kau.logging.KL
import java.util.*
@@ -15,9 +16,15 @@ object SwipeBackHelper {
fun getCurrentPage(activity: Activity): SwipeBackPage = this[activity]
- fun onCreate(activity: Activity) {
- activity.overridePendingTransition(0, 0)
- pageStack.firstOrNull { it.activity === activity } ?: pageStack.push(SwipeBackPage(activity))
+ fun onCreate(activity: Activity, builder: SwipeBackPage.() -> Unit = {}) {
+ val page = pageStack.firstOrNull { it.activity === activity } ?: pageStack.push(SwipeBackPage(activity).apply { builder() })
+ val startAnimation: Int = with(page.edgeFlag) {
+ if (this and SWIPE_EDGE_LEFT > 0) R.anim.kau_slide_in_right
+ else if (this and SWIPE_EDGE_RIGHT > 0) R.anim.kau_slide_in_left
+ else if (this and SWIPE_EDGE_TOP > 0) R.anim.kau_slide_in_bottom
+ else R.anim.kau_slide_in_top
+ }
+ activity.overridePendingTransition(startAnimation, 0)
}
fun onPostCreate(activity: Activity) = this[activity].onPostCreate()
@@ -38,7 +45,21 @@ object SwipeBackHelper {
}
-fun Activity.kauSwipeOnCreate() = SwipeBackHelper.onCreate(this)
+fun Activity.kauSwipeOnCreate(builder: SwipeBackPage.() -> Unit = {}) = SwipeBackHelper.onCreate(this, builder)
fun Activity.kauSwipeOnPostCreate() = SwipeBackHelper.onPostCreate(this)
fun Activity.kauSwipeOnDestroy() = SwipeBackHelper.onDestroy(this)
fun Activity.kauSwipeFinish() = SwipeBackHelper.finish(this)
+
+const val SWIPE_EDGE_LEFT = ViewDragHelper.EDGE_LEFT
+
+const val SWIPE_EDGE_RIGHT = ViewDragHelper.EDGE_RIGHT
+
+const val SWIPE_EDGE_TOP = ViewDragHelper.EDGE_TOP
+
+const val SWIPE_EDGE_BOTTOM = ViewDragHelper.EDGE_BOTTOM
+
+const val SWIPE_EDGE_HORIZONTAL = SWIPE_EDGE_LEFT or SWIPE_EDGE_RIGHT
+
+const val SWIPE_EDGE_VERTICAL = SWIPE_EDGE_TOP or SWIPE_EDGE_BOTTOM
+
+const val SWIPE_EDGE_ALL = SWIPE_EDGE_HORIZONTAL or SWIPE_EDGE_VERTICAL \ No newline at end of file