前言
基于Android12源码,修改NavigationgBar显示方向
源码位置
路径:/frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.java
...
@NavigationBarPosition
int navigationBarPosition(int displayWidth, int displayHeight, int displayRotation) {
if (navigationBarCanMove() && displayWidth > displayHeight) {
if (displayRotation == Surface.ROTATION_270) {
return NAV_BAR_LEFT;
} else if (displayRotation == Surface.ROTATION_90) {
return NAV_BAR_RIGHT;
}
}
return NAV_BAR_BOTTOM;
}
...
修改方法,增加属性自行配置。例如:
...
@NavigationBarPosition
int navigationBarPosition(int displayWidth, int displayHeight, int displayRotation) {
//根据配置修改导航栏显示位置
String customNavi = SystemProperties.get("persist.systemui.navi.custom");
if ("1".equals(customNavi)) {
return NAV_BAR_LEFT;
}
if (navigationBarCanMove() && displayWidth > displayHeight) {
if (displayRotation == Surface.ROTATION_270) {
return NAV_BAR_LEFT;
} else if (displayRotation == Surface.ROTATION_90) {
return NAV_BAR_RIGHT;
}
}
return NAV_BAR_BOTTOM;
}
...