Android13定制状态栏导航栏

张裕  论坛元老 | 2024-6-14 23:07:33 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1394|帖子 1394|积分 4182

一、状态栏的隐藏与体现
SystemUI模块修改文件如下:
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java






frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/window/StatusBarWindowController.java

二、导航栏的隐藏与体现
packages/apps/Launcher3/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java






packages/apps/Launcher3/quickstep/src/com/android/quickstep/TouchInteractionService.java



三、Settings模块修改添加开关:
packages/apps/Settings/res/xml/display_settings.xml

packages/apps/Settings/src/com/android/settings/display/status_navi_bar/NaviBarPreferenceController.java
  1. package com.android.settings.display.status_navi_bar;
  2. import android.content.Context;
  3. import android.content.Intent;
  4. import android.os.SystemProperties;
  5. import android.preference.Preference;
  6. import android.util.Log;
  7. import com.android.settings.core.BasePreferenceController;
  8. import com.android.settings.core.PreferenceControllerMixin;
  9. import com.android.settings.core.TogglePreferenceController;
  10. import com.android.settingslib.core.lifecycle.LifecycleObserver;
  11. import com.android.settingslib.core.lifecycle.events.OnPause;
  12. import com.android.settingslib.core.lifecycle.events.OnResume;
  13. public class NaviBarPreferenceController extends TogglePreferenceController implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener, LifecycleObserver, OnResume, OnPause {
  14.     private static final String TAG = "NaviBarPreferenceController";
  15.     private static final String SYS_PROPERTY_NAVIGATION_BAR = "persist.sys.navigationbar.enable";
  16.     private static final String ACTION_HIDE_NAVIGATION_BAR = "com.systemui.navigationbar.hide";
  17.     private static final String ACTION_SHOW_NAVIGATION_BAR = "com.systemui.navigationbar.show";
  18.     private Context mContext;
  19.     public NaviBarPreferenceController(Context context, String preferenceKey) {
  20.         super(context, preferenceKey);
  21.         mContext = context;
  22.     }
  23.     @Override
  24.     public int getAvailabilityStatus() {
  25.         return BasePreferenceController.AVAILABLE;
  26.     }
  27.     @Override
  28.     public boolean isChecked() {
  29.         return !SystemProperties.getBoolean(SYS_PROPERTY_NAVIGATION_BAR, false);
  30.     }
  31.     @Override
  32.     public boolean setChecked(boolean isChecked) {
  33.         Log.d(TAG, "setChecked: " + isChecked);
  34.         Intent intent = isChecked ? new Intent(ACTION_HIDE_NAVIGATION_BAR) : new Intent(ACTION_SHOW_NAVIGATION_BAR);
  35.         mContext.sendBroadcast(intent);
  36.         return true;
  37.     }
  38.     @Override
  39.     public int getSliceHighlightMenuRes() {
  40.         return NO_RES;
  41.     }
  42.     @Override
  43.     public boolean onPreferenceChange(Preference preference, Object newValue) {
  44.         Log.d(TAG, "onPreferenceChange: "+newValue);
  45.         return true;
  46.     }
  47.     @Override
  48.     public void onPause() {
  49.         Log.d(TAG, "onPause: ");
  50.     }
  51.     @Override
  52.     public void onResume() {
  53.         Log.d(TAG, "onResume: ");
  54.     }
  55. }
复制代码
packages/apps/Settings/src/com/android/settings/display/status_navi_bar/StatusBarPreferenceController.java
  1. package com.android.settings.display.status_navi_bar;
  2. import android.content.Context;
  3. import android.content.Intent;
  4. import android.os.SystemProperties;
  5. import android.preference.Preference;
  6. import android.util.Log;
  7. import com.android.settings.core.BasePreferenceController;
  8. import com.android.settings.core.PreferenceControllerMixin;
  9. import com.android.settings.core.TogglePreferenceController;
  10. import com.android.settingslib.core.lifecycle.LifecycleObserver;
  11. import com.android.settingslib.core.lifecycle.events.OnPause;
  12. import com.android.settingslib.core.lifecycle.events.OnResume;
  13. public class StatusBarPreferenceController extends TogglePreferenceController implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener, LifecycleObserver, OnResume, OnPause {
  14.     private static final String TAG = "StatusBarPreferenceController";
  15.     private static final String SYS_PROPERTY_STATUS_BAR = "persist.sys.statusbar.enable";
  16.     private static final String ACTION_HIDE_STATUS_BAR = "com.systemui.statusbar.hide";
  17.     private static final String ACTION_SHOW_STATUS_BAR = "com.systemui.statusbar.show";
  18.     private Context mContext;
  19.     public StatusBarPreferenceController(Context context, String preferenceKey) {
  20.         super(context, preferenceKey);
  21.         mContext = context;
  22.     }
  23.     @Override
  24.     public int getAvailabilityStatus() {
  25.         return BasePreferenceController.AVAILABLE;
  26.     }
  27.     @Override
  28.     public boolean isChecked() {
  29.         return !SystemProperties.getBoolean(SYS_PROPERTY_STATUS_BAR, false);
  30.     }
  31.     @Override
  32.     public boolean setChecked(boolean isChecked) {
  33.         Log.d(TAG, "setChecked: " + isChecked);
  34.         Intent intent = isChecked ? new Intent(ACTION_HIDE_STATUS_BAR) : new Intent(ACTION_SHOW_STATUS_BAR);
  35.         mContext.sendBroadcast(intent);
  36.         return true;
  37.     }
  38.     @Override
  39.     public int getSliceHighlightMenuRes() {
  40.         return NO_RES;
  41.     }
  42.     @Override
  43.     public boolean onPreferenceChange(Preference preference, Object newValue) {
  44.         Log.d(TAG, "onPreferenceChange: "+newValue);
  45.         return true;
  46.     }
  47.     @Override
  48.     public void onPause() {
  49.         Log.d(TAG, "onPause: ");
  50.     }
  51.     @Override
  52.     public void onResume() {
  53.         Log.d(TAG, "onResume: ");
  54.     }
  55. }
复制代码
至此,完成了状态栏和导航栏的隐藏与体现

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

张裕

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表