Android11.0隐藏状态栏及导航栏

本文详细介绍了在Android11.0系统中如何在设置中添加隐藏状态栏和导航栏的开关,包括设置全局变量、修改默认值、使用广播机制以及在SystemUI中处理相关操作,确保了暗色模式下的可见性。

隐藏状态栏及导航栏

本文描述Android11系统设置-显示中添加隐藏状态栏及导航栏开关及功能实现。

添加全局状态保存配置

在M(Android5.0)版本之前,SettingsProvider中系统设置是存储在settings.db数据库中;但是在L(Android6.0)之后,SettingsProvider中系统设置改为由xml存储在data分区,路径为 /data/system/users/0/:
settings_global.xml
settings_secure.xml
settings_system.xml

  1. Settings中添加全局变量,修改路径 /frameworks/base/core/java/android/provider/Settings.java;
public static final class Global extends NameValueTable{
   
   
  //********省略代码******
  
        /**
         * Hide Navigation.
         *
         * @hide
         */
        public static final String HIDE_NAVIGATION = "hide_navigation";

        /**
         * Hide StatusBar.
         *
         * @hide
         */
        public static final String HIDE_STATUSBAR = "hide_statusbar";
        
  //********省略代码******
}
  1. 添加开关默认值,修改路径 /frameworks/base/packages/SettingsProvider/res/values/defaults.xml;
<resources>
//********省略代码******
    <integer name="def_hide_navigation">0</integer>
    <integer name="def_hide_statusbar">0</integer>
//********省略代码******
</resources>
  1. 添加proto,修改路径 /frameworks/base/core/proto/android/providers/settings/global.proto;
//********省略代码******

    message Display {
   
   
        //********省略代码******
        optional SettingProto hide_navigation_on = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
        optional SettingProto hide_statusbar_on = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
    }

//********省略代码******
  1. 开关默认值加载,修改路径 /frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java;
//********省略代码******

private void loadGlobalSettings(SQLiteDatabase db){
   
   

       loadIntegerSetting(stmt, Settings.Global.HIDE_NAVIGATION, R.integer.def_hide_navigation);
       loadIntegerSetting(stmt, Settings.Global.HIDE_STATUSBAR, R.integer.def_hide_statusbar);

}

//********省略代码******
  1. 修改路径 /frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java;
//********省略代码******

        final long displayToken = p.start(GlobalSettingsProto.DISPLAY);
        //********省略代码******
        dumpSetting(s, p,
                Settings.Global.HIDE_NAVIGATION,
                GlobalSettingsProto.Display.HIDE_NAVIGATION_ON);
        dumpSetting(s, p,
                Settings.Global.HIDE_STATUSBAR,
                GlobalSettingsProto.Display.HIDE_STATUSBAR_ON);
        p.end(displayToken);

//********省略代码******

设备-显示中添加隐藏状态栏及隐藏导航栏开关

  1. 定义开关名称文字 修改路径 /packages/app/Settings/res/values/strings.xml
//********省略代码******

    <string name
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值