mirror of
https://github.com/SimpleMobileTools/Simple-Launcher.git
synced 2025-02-16 19:40:41 +01:00
add some distance checking at long pressing widgets
This commit is contained in:
parent
db02a2ce40
commit
f4ea085118
@ -9,8 +9,10 @@ import android.view.ViewConfiguration
|
|||||||
import com.simplemobiletools.commons.extensions.performHapticFeedback
|
import com.simplemobiletools.commons.extensions.performHapticFeedback
|
||||||
|
|
||||||
class MyAppWidgetHostView(context: Context) : AppWidgetHostView(context) {
|
class MyAppWidgetHostView(context: Context) : AppWidgetHostView(context) {
|
||||||
|
private var MAX_ALLOWED_MOVE = 10
|
||||||
private var longPressHandler = Handler()
|
private var longPressHandler = Handler()
|
||||||
private var actionDownCoords = PointF()
|
private var actionDownCoords = PointF()
|
||||||
|
private var currentCoords = PointF()
|
||||||
var hasLongPressed = false
|
var hasLongPressed = false
|
||||||
var longPressListener: ((x: Float, y: Float) -> Unit)? = null
|
var longPressListener: ((x: Float, y: Float) -> Unit)? = null
|
||||||
|
|
||||||
@ -25,6 +27,12 @@ class MyAppWidgetHostView(context: Context) : AppWidgetHostView(context) {
|
|||||||
longPressHandler.postDelayed(longPressRunnable, ViewConfiguration.getLongPressTimeout().toLong())
|
longPressHandler.postDelayed(longPressRunnable, ViewConfiguration.getLongPressTimeout().toLong())
|
||||||
actionDownCoords.x = event.rawX
|
actionDownCoords.x = event.rawX
|
||||||
actionDownCoords.y = event.rawY
|
actionDownCoords.y = event.rawY
|
||||||
|
currentCoords.x = event.rawX
|
||||||
|
currentCoords.y = event.rawY
|
||||||
|
}
|
||||||
|
MotionEvent.ACTION_MOVE -> {
|
||||||
|
currentCoords.x = event.rawX
|
||||||
|
currentCoords.y = event.rawY
|
||||||
}
|
}
|
||||||
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> longPressHandler.removeCallbacksAndMessages(null)
|
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> longPressHandler.removeCallbacksAndMessages(null)
|
||||||
}
|
}
|
||||||
@ -33,9 +41,11 @@ class MyAppWidgetHostView(context: Context) : AppWidgetHostView(context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val longPressRunnable = Runnable {
|
private val longPressRunnable = Runnable {
|
||||||
longPressHandler.removeCallbacksAndMessages(null)
|
if (Math.abs(actionDownCoords.x - currentCoords.x) < MAX_ALLOWED_MOVE && Math.abs(actionDownCoords.y - currentCoords.y) < MAX_ALLOWED_MOVE) {
|
||||||
hasLongPressed = true
|
longPressHandler.removeCallbacksAndMessages(null)
|
||||||
longPressListener?.invoke(actionDownCoords.x, actionDownCoords.y)
|
hasLongPressed = true
|
||||||
performHapticFeedback()
|
longPressListener?.invoke(actionDownCoords.x, actionDownCoords.y)
|
||||||
|
performHapticFeedback()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user