From 7fcaa954eb74158c7ae8c5a861d6600a9f543d7a Mon Sep 17 00:00:00 2001 From: lvlisong Date: Fri, 14 Feb 2025 10:34:42 +0800 Subject: [PATCH] =?UTF-8?q?GIT=20=E6=8F=90=E4=BA=A4=E6=B6=88=E6=81=AF?= =?UTF-8?q?=EF=BC=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 重构浮动窗口管理和布局属性 - 调整浮动窗口的布局和样式,以改善用户体验。 - 重构 MainActivity 中的浮动窗口处理逻辑,以增强功能性和清晰度。 - 通过移除不必要的方法和优化状态管理,简化 MainViewModel。 --- .../java/io/sixminutes/ridicule/MainActivity.kt | 14 +++++++++++--- .../java/io/sixminutes/ridicule/MainViewModel.kt | 5 ----- app/src/main/res/layout/floating_window.xml | 7 ++++--- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/io/sixminutes/ridicule/MainActivity.kt b/app/src/main/java/io/sixminutes/ridicule/MainActivity.kt index a9402ef..c7f32bc 100755 --- a/app/src/main/java/io/sixminutes/ridicule/MainActivity.kt +++ b/app/src/main/java/io/sixminutes/ridicule/MainActivity.kt @@ -120,7 +120,7 @@ class MainActivity : AppCompatActivity() { configureWindowParams() windowBinding.root.setOnClickListener { if (isActive()) { - viewModel.hideFloatingWindow() + hideFloatingWindow() } } } @@ -133,7 +133,7 @@ class MainActivity : AppCompatActivity() { } /** - * 隐藏悬浮窗 + * 隐藏悬浮窗并回到主窗口 */ private fun hideFloatingWindow() { try { @@ -161,13 +161,19 @@ class MainActivity : AppCompatActivity() { private fun bringMainActivityToFront() { val activityManager = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager val tasks = activityManager.getRunningTasks(10) // 获取最近的任务列表 + var found = false for (task in tasks) { if (task.topActivity?.packageName == packageName) { // 找到 MainActivity 的任务栈,将其带到前台 activityManager.moveTaskToFront(task.id, ActivityManager.MOVE_TASK_WITH_HOME) + found = true break } } + if (found) + Log.e("MainActivity", "MainActivity found") + else + Log.e("MainActivity", "MainActivity not found") } /** @@ -196,7 +202,9 @@ class MainActivity : AppCompatActivity() { flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE or WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS format = android.graphics.PixelFormat.TRANSLUCENT - gravity = android.view.Gravity.TOP or android.view.Gravity.START + gravity = android.view.Gravity.BOTTOM or android.view.Gravity.END // 修改为右下角 + x = 0 // 初始 x 坐标 + y = 0 // 初始 y 坐标 } /** diff --git a/app/src/main/java/io/sixminutes/ridicule/MainViewModel.kt b/app/src/main/java/io/sixminutes/ridicule/MainViewModel.kt index ed7063d..33c34a2 100644 --- a/app/src/main/java/io/sixminutes/ridicule/MainViewModel.kt +++ b/app/src/main/java/io/sixminutes/ridicule/MainViewModel.kt @@ -90,11 +90,6 @@ class MainViewModel(application: Application) : AndroidViewModel(application) { updateState { it.copy(floatingWindowVisible = hasPermission) } } - fun hideFloatingWindow() { - updateState { it.copy(floatingWindowVisible = false) } - removeFloatingView() - } - fun cleanUpResources() { removeFloatingView() } diff --git a/app/src/main/res/layout/floating_window.xml b/app/src/main/res/layout/floating_window.xml index ca067cc..9814a6f 100644 --- a/app/src/main/res/layout/floating_window.xml +++ b/app/src/main/res/layout/floating_window.xml @@ -2,13 +2,14 @@ + android:background="#22000000" + android:layout_gravity="bottom|end"> + android:text="悬浮窗" + android:textSize="18sp" /> \ No newline at end of file