前言
正常情况下横竖屏旋转的时候导航栏也会跟着一起旋转,但是在Android R上面发现导航栏在横屏的时候是固定在右侧的,而不是旋转到底部。这个功能其实是Android 高版本特意修改的,为了是方便横屏玩游戏等场景的时候不小心误触到。我们先看看原本的界面图。
【竖屏界面】
【横屏界面】
一开始的时候我以为是在SystemUI里面控制的导航栏旋转界面切换,但是发现并不是这样,其实是跟 framework中的 R.bool.config_navBarCanMove 这个变量有关,具体代码修改很简单,如下:
diff --git a/frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.java b/frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.javaold mode 100644new mode 100755index 0d467c50aa1..0a7662dd8fc--- a/frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.java+++ b/frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.java@@ -2895,9 +2895,10 @@ public class DisplayPolicy {void updateConfigurationAndScreenSizeDependentBehaviors() {final Resources res = getCurrentUserResources();- mNavigationBarCanMove =-mDisplayContent.mBaseDisplayWidth != mDisplayContent.mBaseDisplayHeight- && res.getBoolean(R.bool.config_navBarCanMove);+ //mNavigationBarCanMove =+ // mDisplayContent.mBaseDisplayWidth != mDisplayContent.mBaseDisplayHeight+ //&& res.getBoolean(R.bool.config_navBarCanMove);+ mNavigationBarCanMove = false;mDisplayContent.getDisplayRotation().updateUserDependentConfiguration(res);}