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 a658cd1..53a0876 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 @@ -2,10 +2,10 @@ package de.jrpie.android.launcher.ui import android.annotation.SuppressLint import android.content.SharedPreferences +import android.content.res.Configuration import android.content.res.Resources import android.os.Build import android.os.Bundle -import android.util.DisplayMetrics import android.view.KeyEvent import android.view.MotionEvent import android.view.View @@ -56,22 +56,11 @@ class HomeActivity : UIObject, AppCompatActivity() { super.onCreate(savedInstanceState) super.onCreate() - val displayMetrics = DisplayMetrics() - - @Suppress("deprecation") // required to support API < 30 - windowManager.defaultDisplay.getMetrics(displayMetrics) - - val width = displayMetrics.widthPixels - val height = displayMetrics.heightPixels - touchGestureDetector = TouchGestureDetector( - this, - width, - height, + this, 0, 0, LauncherPreferences.enabled_gestures().edgeSwipeEdgeWidth() / 100f ) - - + touchGestureDetector.updateScreenSize(windowManager) // Initialise layout binding = HomeBinding.inflate(layoutInflater) @@ -103,6 +92,11 @@ class HomeActivity : UIObject, AppCompatActivity() { } } + override fun onConfigurationChanged(newConfig: Configuration) { + super.onConfigurationChanged(newConfig) + touchGestureDetector.updateScreenSize(windowManager) + } + override fun onStart() { super.onStart() diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/TouchGestureDetector.kt b/app/src/main/java/de/jrpie/android/launcher/ui/TouchGestureDetector.kt index 9000fa8..8e8ed4e 100644 --- a/app/src/main/java/de/jrpie/android/launcher/ui/TouchGestureDetector.kt +++ b/app/src/main/java/de/jrpie/android/launcher/ui/TouchGestureDetector.kt @@ -5,8 +5,10 @@ import android.graphics.Insets import android.os.Build import android.os.Handler import android.os.Looper +import android.util.DisplayMetrics import android.view.MotionEvent import android.view.ViewConfiguration +import android.view.WindowManager import androidx.annotation.RequiresApi import de.jrpie.android.launcher.actions.Gesture import de.jrpie.android.launcher.preferences.LauncherPreferences @@ -17,8 +19,8 @@ import kotlin.math.tan class TouchGestureDetector( private val context: Context, - val width: Int, - val height: Int, + var width: Int, + var height: Int, var edgeWidth: Float ) { private val ANGULAR_THRESHOLD = tan(Math.PI / 6) @@ -319,6 +321,14 @@ class TouchGestureDetector( } } + fun updateScreenSize(windowManager: WindowManager) { + val displayMetrics = DisplayMetrics() + @Suppress("deprecation") // required to support API < 30 + windowManager.defaultDisplay.getMetrics(displayMetrics) + width = displayMetrics.widthPixels + height = displayMetrics.heightPixels + } + @RequiresApi(Build.VERSION_CODES.Q) fun setSystemGestureInsets(insets: Insets) { systemGestureInsetTop = insets.top