diff --git a/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java b/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java
index 970e97f..904893b 100644
--- a/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java
+++ b/app/src/main/java/de/jrpie/android/launcher/preferences/LauncherPreferences$Config.java
@@ -60,6 +60,7 @@ import eu.jonahbauer.android.preference.annotations.serializer.PreferenceSeriali
@PreferenceGroup(name = "enabled_gestures", prefix = "settings_enabled_gestures_", suffix = "_key", value = {
@Preference(name = "double_swipe", type = boolean.class, defaultValue = "true"),
@Preference(name = "edge_swipe", type = boolean.class, defaultValue = "true"),
+ @Preference(name = "edge_swipe_edge_width", type = int.class, defaultValue = "15"),
}),
})
public final class LauncherPreferences$Config {
diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt b/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt
index f23d25e..5cee25e 100644
--- a/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt
@@ -57,6 +57,8 @@ class HomeActivity : UIObject, AppCompatActivity(),
}
}
+ private var edgeWidth = 0.15f
+
private var bufferedPointerCount = 1 // how many fingers on screen
private var pointerBufferTimer = Timer()
@@ -99,6 +101,7 @@ class HomeActivity : UIObject, AppCompatActivity(),
LauncherPreferences.getSharedPreferences()
.registerOnSharedPreferenceChangeListener(sharedPreferencesListener)
+
}
private fun updateClock() {
@@ -161,6 +164,9 @@ class HomeActivity : UIObject, AppCompatActivity(),
override fun onResume() {
super.onResume()
+
+ edgeWidth = LauncherPreferences.enabled_gestures().edgeSwipeEdgeWidth() / 100f
+
updateClock()
}
@@ -200,7 +206,6 @@ class HomeActivity : UIObject, AppCompatActivity(),
val doubleActions = LauncherPreferences.enabled_gestures().doubleSwipe()
val edgeActions = LauncherPreferences.enabled_gestures().edgeSwipe()
- val edgeStrictness = 0.15
val threshold = ViewConfiguration.get(this).scaledTouchSlop
@@ -227,15 +232,15 @@ class HomeActivity : UIObject, AppCompatActivity(),
}
if (edgeActions) {
- if (max(e1.x, e2.x) < edgeStrictness * width) {
+ if (max(e1.x, e2.x) < edgeWidth * width) {
gesture = gesture?.let { it.getEdgeVariant(Gesture.Edge.LEFT) }
- } else if (min(e1.x, e2.x) > (1 - edgeStrictness) * width) {
+ } else if (min(e1.x, e2.x) > (1 - edgeWidth) * width) {
gesture = gesture?.let { it.getEdgeVariant(Gesture.Edge.RIGHT) }
}
- if (max(e1.y, e2.y) < edgeStrictness * height) {
+ if (max(e1.y, e2.y) < edgeWidth * height) {
gesture = gesture?.let { it.getEdgeVariant(Gesture.Edge.TOP) }
- } else if (min(e1.y, e2.y) > (1 - edgeStrictness) * height) {
+ } else if (min(e1.y, e2.y) > (1 - edgeWidth) * height) {
gesture = gesture?.let { it.getEdgeVariant(Gesture.Edge.BOTTOM) }
}
}
diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/settings/GestureAreaIndicatorOverlayView.kt b/app/src/main/java/de/jrpie/android/launcher/ui/settings/GestureAreaIndicatorOverlayView.kt
new file mode 100644
index 0000000..7ee475f
--- /dev/null
+++ b/app/src/main/java/de/jrpie/android/launcher/ui/settings/GestureAreaIndicatorOverlayView.kt
@@ -0,0 +1,87 @@
+package de.jrpie.android.launcher.ui.settings
+
+import android.animation.AnimatorListenerAdapter
+import android.content.Context
+import android.content.SharedPreferences
+import android.graphics.Canvas
+import android.graphics.Paint
+import android.graphics.Rect
+import android.util.AttributeSet
+import android.view.View
+import android.view.animation.AccelerateInterpolator
+import android.view.animation.AlphaAnimation
+import android.view.animation.Animation
+import de.jrpie.android.launcher.preferences.LauncherPreferences
+
+/*
+ * An overlay to indicate the areas where edge-gestures are detected
+ */
+class GestureAreaIndicatorOverlayView(context: Context?, attrs: AttributeSet?) : View(context, attrs) {
+
+ private var horizontalWidth = 0.1f
+ private var verticalWidth = 0.1f
+
+ private lateinit var edgeLeft: Rect
+ private lateinit var edgeRight: Rect
+ private lateinit var edgeTop: Rect
+ private lateinit var edgeBottom: Rect
+
+ private val hideTask = Runnable {
+ visibility = INVISIBLE
+ }
+
+ private var sharedPreferencesListener =
+ SharedPreferences.OnSharedPreferenceChangeListener { _, prefKey ->
+ if (prefKey == LauncherPreferences.enabled_gestures().keys().edgeSwipeEdgeWidth()) {
+
+ this.removeCallbacks(hideTask)
+ visibility = VISIBLE
+
+ update()
+
+ requestLayout()
+ invalidate()
+
+ this.postDelayed(hideTask, 3000)
+ }
+ }
+
+
+ constructor(context: Context) : this(context, null) { }
+
+ private val overlayPaint = Paint()
+ init {
+ overlayPaint.setARGB(50,255,0,0)
+ overlayPaint.strokeWidth = 10f
+
+ update()
+ }
+
+ private fun update() {
+ horizontalWidth = LauncherPreferences.enabled_gestures().edgeSwipeEdgeWidth() / 100f
+ verticalWidth = horizontalWidth
+
+ edgeTop = Rect(0,0,(width * horizontalWidth).toInt(), height)
+ edgeBottom = Rect((width * (1 - horizontalWidth)).toInt(),0,width, height)
+ edgeLeft = Rect(0,0, width, (height * verticalWidth).toInt())
+ edgeRight = Rect(0,(height * (1-verticalWidth)).toInt(), width, height)
+ }
+
+ override fun onAttachedToWindow() {
+ super.onAttachedToWindow()
+ LauncherPreferences.getSharedPreferences().registerOnSharedPreferenceChangeListener(sharedPreferencesListener)
+ }
+
+ override fun onDetachedFromWindow() {
+ LauncherPreferences.getSharedPreferences().unregisterOnSharedPreferenceChangeListener(sharedPreferencesListener)
+ super.onDetachedFromWindow()
+ }
+
+ override fun onDraw(canvas: Canvas) {
+
+ arrayOf(edgeLeft,
+ edgeRight, edgeTop, edgeBottom).forEach { e ->
+ canvas.drawRect(e, overlayPaint)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/settings.xml b/app/src/main/res/layout/settings.xml
index 68d1d9a..f7d5c6e 100644
--- a/app/src/main/res/layout/settings.xml
+++ b/app/src/main/res/layout/settings.xml
@@ -1,6 +1,5 @@
-
+ custom:type="solid" />
+
+
+
+
diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml
index 093a28c..3a3a569 100644
--- a/app/src/main/res/values/donottranslate.xml
+++ b/app/src/main/res/values/donottranslate.xml
@@ -97,6 +97,7 @@
enabled_gestures.double_actions
enabled_gestures.edge_actions
+ enabled_gestures.edge_actions.edge_width
functionality.search_auto_launch
functionality.search_auto_keyboard
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 09ecd60..49e11fc 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -109,6 +109,7 @@
Double swipe actions
Edge swipe actions
+ Edge width
Launch search results
Start keyboard for search
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 740cb5a..3bdccfc 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -95,6 +95,16 @@
android:key="@string/settings_enabled_gestures_edge_swipe_key"
android:defaultValue="true"
android:title="@string/settings_enabled_gestures_edge_swipe"/>
+
+
+
+