小工具知识网

当前位置: 首页 > 行业知识 > Android13定制状态栏导航栏

行业知识

Android13定制状态栏导航栏

2026-11-07 05:26:26 来源:互联网转载

一、状态栏的隐藏与显示

SystemUI模块修改index.php/tags-522.html" >文件如下:

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

package com.android.settings.display.status_navi_bar;import android.content.Context;import android.content.Intent;import android.os.SystemProperties;import android.preference.Preference;import android.util.Log;import com.android.settings.core.BasePreferenceController;import com.android.settings.core.PreferenceControllerMixin;import com.android.settings.core.TogglePreferenceController;import com.android.settingslib.core.lifecycle.LifecycleObserver;import com.android.settingslib.core.lifecycle.events.OnPause;import com.android.settingslib.core.lifecycle.events.OnResume;public class NaviBarPreferenceController extends TogglePreferenceController implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener, LifecycleObserver, OnResume, OnPause {    private static final String TAG = "NaviBarPreferenceController";    private static final String SYS_PROPERTY_NAVIGATION_BAR = "persist.sys.navigationbar.enable";    private static final String ACTION_HIDE_NAVIGATION_BAR = "com.systemui.navigationbar.hide";    private static final String ACTION_SHOW_NAVIGATION_BAR = "com.systemui.navigationbar.show";    private Context mContext;    public NaviBarPreferenceController(Context context, String preferenceKey) {        super(context, preferenceKey);        mContext = context;    }    @Override    public int getAvailabilityStatus() {        return BasePreferenceController.AVAILABLE;    }    @Override    public boolean isChecked() {        return !SystemProperties.getBoolean(SYS_PROPERTY_NAVIGATION_BAR, false);    }    @Override    public boolean setChecked(boolean isChecked) {        Log.d(TAG, "setChecked: " + isChecked);        Intent intent = isChecked ? new Intent(ACTION_HIDE_NAVIGATION_BAR) : new Intent(ACTION_SHOW_NAVIGATION_BAR);        mContext.sendBroadcast(intent);        return true;    }    @Override    public int getSliceHighlightMenuRes() {        return NO_RES;    }    @Override    public boolean onPreferenceChange(Preference preference, Object newValue) {        Log.d(TAG, "onPreferenceChange: "+newValue);        return true;    }    @Override    public void onPause() {        Log.d(TAG, "onPause: ");    }    @Override    public void onResume() {        Log.d(TAG, "onResume: ");    }}

packages/apps/Settings/src/com/android/settings/display/status_navi_bar/StatusBarPreferenceController.java

package com.android.settings.display.status_navi_bar;import android.content.Context;import android.content.Intent;import android.os.SystemProperties;import android.preference.Preference;import android.util.Log;import com.android.settings.core.BasePreferenceController;import com.android.settings.core.PreferenceControllerMixin;import com.android.settings.core.TogglePreferenceController;import com.android.settingslib.core.lifecycle.LifecycleObserver;import com.android.settingslib.core.lifecycle.events.OnPause;import com.android.settingslib.core.lifecycle.events.OnResume;public class StatusBarPreferenceController extends TogglePreferenceController implements PreferenceControllerMixin, Preference.OnPreferenceChangeListener, LifecycleObserver, OnResume, OnPause {    private static final String TAG = "StatusBarPreferenceController";    private static final String SYS_PROPERTY_STATUS_BAR = "persist.sys.statusbar.enable";    private static final String ACTION_HIDE_STATUS_BAR = "com.systemui.statusbar.hide";    private static final String ACTION_SHOW_STATUS_BAR = "com.systemui.statusbar.show";    private Context mContext;    public StatusBarPreferenceController(Context context, String preferenceKey) {        super(context, preferenceKey);        mContext = context;    }    @Override    public int getAvailabilityStatus() {        return BasePreferenceController.AVAILABLE;    }    @Override    public boolean isChecked() {        return !SystemProperties.getBoolean(SYS_PROPERTY_STATUS_BAR, false);    }    @Override    public boolean setChecked(boolean isChecked) {        Log.d(TAG, "setChecked: " + isChecked);        Intent intent = isChecked ? new Intent(ACTION_HIDE_STATUS_BAR) : new Intent(ACTION_SHOW_STATUS_BAR);        mContext.sendBroadcast(intent);        return true;    }    @Override    public int getSliceHighlightMenuRes() {        return NO_RES;    }    @Override    public boolean onPreferenceChange(Preference preference, Object newValue) {        Log.d(TAG, "onPreferenceChange: "+newValue);        return true;    }    @Override    public void onPause() {        Log.d(TAG, "onPause: ");    }    @Override    public void onResume() {        Log.d(TAG, "onResume: ");    }}

至此,完成了状态栏和导航栏的隐藏与显示

上一篇:突袭三怎么进入服务器?

下一篇:Perl源码深度解析与探索之旅