Android 修改NavigationgBar显示方向

28 阅读1分钟

前言

基于Android12源码,修改NavigationgBar显示方向

源码位置

image.png

路径:/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;
}
...