aboutsummaryrefslogtreecommitdiff
path: root/core/src/main/kotlin/ca/allanwang/kau/swipe/RelativeSlider.kt
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/kotlin/ca/allanwang/kau/swipe/RelativeSlider.kt')
-rw-r--r--core/src/main/kotlin/ca/allanwang/kau/swipe/RelativeSlider.kt36
1 files changed, 36 insertions, 0 deletions
diff --git a/core/src/main/kotlin/ca/allanwang/kau/swipe/RelativeSlider.kt b/core/src/main/kotlin/ca/allanwang/kau/swipe/RelativeSlider.kt
new file mode 100644
index 0000000..ee86ff2
--- /dev/null
+++ b/core/src/main/kotlin/ca/allanwang/kau/swipe/RelativeSlider.kt
@@ -0,0 +1,36 @@
+package ca.allanwang.kau.swipe
+
+import ca.allanwang.kau.kotlin.nonReadable
+
+/**
+ * Created by Mr.Jude on 2015/8/26.
+ */
+class RelativeSlider(var curPage: SwipeBackPage) : SwipeListener {
+
+ var offset = 0f
+
+ var enabled: Boolean
+ @Deprecated(level = DeprecationLevel.ERROR, message = "Cannot use enabled as getter")
+ get() = nonReadable()
+ set(value) {
+ if (value) curPage.addListener(this)
+ else curPage.removeListener(this)
+ }
+
+ override fun onScroll(percent: Float, px: Int) {
+ if (offset == 0f) return //relative slider is not enabled
+ val page = SwipeBackHelper.getPrePage(curPage) ?: return
+ page.swipeBackLayout.x = Math.min(-offset * Math.max(1 - percent, 0f) + DEFAULT_OFFSET, 0f)
+ if (percent == 0f) page.swipeBackLayout.x = 0f
+ }
+
+ override fun onEdgeTouch() {}
+
+ override fun onScrollToClose() {
+ SwipeBackHelper.getPrePage(curPage)?.swipeBackLayout?.x = 0f
+ }
+
+ companion object {
+ private const val DEFAULT_OFFSET = 40
+ }
+}