Quellcode durchsuchen

refactor(app): 优化全屏体验并保留导航栏手势区域- 移除了完全隐藏导航栏的设置,保留导航栏手势区域
- 简化了全屏设置的代码,提高了代码可读性
- 优化了系统UI可见性变化的处理逻辑,仅处理状态栏显示

mws vor 3 Monaten
Ursprung
Commit
2b9fb5bc15
1 geänderte Dateien mit 25 neuen und 28 gelöschten Zeilen
  1. 25 28
      app/src/main/java/com/paul/drone/SteamControlActivity.java

+ 25 - 28
app/src/main/java/com/paul/drone/SteamControlActivity.java

@@ -59,44 +59,41 @@ public class SteamControlActivity extends DefaultLayoutActivity {
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        
-        // 设置全屏模式,隐藏系统UI
+
+        // 设置全屏模式,但保留导航栏手势区域
         getWindow().setFlags(
-            android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN,
-            android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN
+                android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN,
+                android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN
         );
-        
-        // 隐藏导航栏和状态栏,并设置布局标志
+
+        // 设置系统UI可见性,隐藏状态栏但保留导航栏手势区域
         View decorView = getWindow().getDecorView();
         int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN
-                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
-                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                 | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
-                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
-                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
+                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
+                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
         decorView.setSystemUiVisibility(uiOptions);
-        
-        // 监听系统UI可见性变化,确保始终保持全屏
+
+        // 监听系统UI可见性变化,确保不会强制隐藏导航栏
         decorView.setOnSystemUiVisibilityChangeListener(visibility -> {
+            // 只处理状态栏的显示,不处理导航栏
             if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
-                decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE 
-                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
-                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
-                        | View.SYSTEM_UI_FLAG_FULLSCREEN 
-                        | View.SYSTEM_UI_FLAG_IMMERSIVE
-                        | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
+                decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
+                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+                        | View.SYSTEM_UI_FLAG_FULLSCREEN
+                        | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
             }
         });
-        
+
         // 设置窗口背景为黑色,确保没有透明区域
         getWindow().setBackgroundDrawable(new android.graphics.drawable.ColorDrawable(android.graphics.Color.BLACK));
-        
+
         // 强制设置窗口布局参数,确保完全全屏
         android.view.WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
         layoutParams.flags |= android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN;
         layoutParams.flags |= android.view.WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
         getWindow().setAttributes(layoutParams);
-        
+
         // 添加直播状态显示的UI元素
         addLiveStatusView();
 
@@ -107,20 +104,19 @@ public class SteamControlActivity extends DefaultLayoutActivity {
         bindMqttService();
     }
 
+
     @Override
     protected void onResume() {
         super.onResume();
-        
-        // 重新应用全屏设置,确保没有黑边
+
+        // 重新应用全屏设置,但保留导航栏手势区域
         View decorView = getWindow().getDecorView();
         int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN
-                | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
-                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                 | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
-                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
-                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
+                | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
+                | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
         decorView.setSystemUiVisibility(uiOptions);
-        
+
         // 重新设置窗口参数
         android.view.WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
         layoutParams.flags |= android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN;
@@ -128,6 +124,7 @@ public class SteamControlActivity extends DefaultLayoutActivity {
         getWindow().setAttributes(layoutParams);
     }
 
+
     /**
      * 添加直播状态显示的UI元素
      */