From e803969433b56e7e6ef4b02ed01aaa2e410eb1f9 Mon Sep 17 00:00:00 2001 From: Allan Wang Date: Wed, 5 Jul 2017 23:30:09 -0700 Subject: Allow for sensitivity config --- .../ca/allanwang/kau/swipe/SwipeBackLayout.kt | 7 +++++++ .../kotlin/ca/allanwang/kau/swipe/SwipeBackPage.kt | 1 + .../ca/allanwang/kau/swipe/ViewDragHelper.java | 21 +++++++++++++++++++++ .../allanwang/kau/swipe/ViewDragHelperExtras.java | 6 ++++++ 4 files changed, 35 insertions(+) diff --git a/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackLayout.kt b/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackLayout.kt index 48d7188..4473e23 100644 --- a/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackLayout.kt +++ b/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackLayout.kt @@ -132,6 +132,12 @@ class SwipeBackLayout @JvmOverloads constructor(context: Context, attrs: Attribu dragHelper.maxVelocity = value } + override var sensitivity: Float + get() = dragHelper.sensitivity + set(value) { + dragHelper.setSensitivity(context, value) + } + init { dragHelper = ViewDragHelper.create(this, ViewDragCallback()) val density = resources.displayMetrics.density @@ -141,6 +147,7 @@ class SwipeBackLayout @JvmOverloads constructor(context: Context, attrs: Attribu minVelocity = minVel // maxVelocity = 2.5f * minVel edgeFlag = edgeFlag + sensitivity = 0.3f addListener(chromeFadeListener) } diff --git a/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackPage.kt b/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackPage.kt index c4e637b..cb28342 100644 --- a/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackPage.kt +++ b/core/src/main/kotlin/ca/allanwang/kau/swipe/SwipeBackPage.kt @@ -59,6 +59,7 @@ interface SwipeBackContract { var disallowIntercept: Boolean var minVelocity: Float var maxVelocity: Float + var sensitivity:Float fun setEdgeSizePercent(swipeEdgePercent: Float) fun addListener(listener: SwipeListener) fun removeListener(listener: SwipeListener) diff --git a/core/src/main/kotlin/ca/allanwang/kau/swipe/ViewDragHelper.java b/core/src/main/kotlin/ca/allanwang/kau/swipe/ViewDragHelper.java index 6b34af3..c6ff116 100644 --- a/core/src/main/kotlin/ca/allanwang/kau/swipe/ViewDragHelper.java +++ b/core/src/main/kotlin/ca/allanwang/kau/swipe/ViewDragHelper.java @@ -384,6 +384,27 @@ public class ViewDragHelper implements ViewDragHelperExtras { mScroller = new OverScroller(context, sInterpolator); } + /** + * Sets the sensitivity of the dragger. + * + * @param context The application context. + * @param sensitivity value between 0 and 1, the final value for touchSlop = + * ViewConfiguration.getScaledTouchSlop * (1 / s); + * 1 is the default + */ + @Override + public void setSensitivity(Context context, float sensitivity) { + float s = Math.max(0f, Math.min(1.0f, sensitivity)); + ViewConfiguration viewConfiguration = ViewConfiguration.get(context); + mTouchSlop = (int) (viewConfiguration.getScaledTouchSlop() * (1 / s)); + } + + @Override + public float getSensitivity() { + return mTouchSlop; + } + + /** * Set the minimum velocity that will be detected as having a magnitude greater than zero * in pixels per second. Callback methods accepting a velocity will be clamped appropriately. diff --git a/core/src/main/kotlin/ca/allanwang/kau/swipe/ViewDragHelperExtras.java b/core/src/main/kotlin/ca/allanwang/kau/swipe/ViewDragHelperExtras.java index 2ee7ea3..a99310f 100644 --- a/core/src/main/kotlin/ca/allanwang/kau/swipe/ViewDragHelperExtras.java +++ b/core/src/main/kotlin/ca/allanwang/kau/swipe/ViewDragHelperExtras.java @@ -1,5 +1,7 @@ package ca.allanwang.kau.swipe; +import android.content.Context; + /** * Created by Allan Wang on 2017-07-05. *

@@ -20,4 +22,8 @@ interface ViewDragHelperExtras { float getMaxVelocity(); + void setSensitivity(Context context, float sensitivity); + + float getSensitivity(); + } -- cgit v1.2.3