diff options
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.kt | 29 |
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 |