实现此功能,修改的是systemui;下方是git diff的内容
diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java b/frameworks/base/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java
index 720afe24c5..86214e83df 100644
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java
@@ -205,7 +205,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener,
private Bundle mSavedState;
private NavigationBarView mNavigationBarView;
- private NavigationBarFrame mFrame;
+ public NavigationBarFrame mFrame;
private @WindowVisibleState int mNavigationBarWindowState = WINDOW_STATE_SHOWING;
diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java b/frameworks/base/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java
index a984974c6b..ead1de280c 100644
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java
@@ -147,6 +147,24 @@ public class NavigationBarController implements
}
}
+ public void hide(int displayId){
+ Log.e("status_bar","2222");
+ NavigationBar bar = mNavigationBars.get(displayId);
+ if(bar != null){
+ Log.e("status_bar","2222");
+ bar.mFrame.setVisibility(View.GONE);
+ }
+ }
+ public void show(int displayId){
+ Log.e("status_bar","333");
+ NavigationBar bar = mNavigationBars.get(displayId);
+ if(bar != null){
+ Log.e("status_bar","4444");
+ bar.mFrame.setVisibility(View.VISIBLE);
+ }
+ }
+
+
@Override
public void onNavigationModeChanged(int mode) {
if (mNavMode == mode) {
diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index a6fb317cdf..0367650fe7 100644
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -917,6 +917,36 @@ public class StatusBar extends SystemUI implements
id -> onLaunchTransitionTimeout());
}
+ private BroadcastReceiver mReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ if("hide_status".equals(action)){
+ Log.e("status_bar","hide_status");
+ if(mStatusBarWindowController != null){
+ mStatusBarWindowController.hide();
+ }
+ if(mNavigationBarController != null){
+ Log.e("status_bar","hide_status111");
+ mNavigationBarController.hide(mDisplayId);
+ }
+ // getNavigationBarView().setVisibility(View.GONE);
+
+ }else if("show_status".equals(action)){
+ Log.e("status_bar","show_status");
+ if(mStatusBarWindowController != null){
+ mStatusBarWindowController.show();
+ }
+ if(mNavigationBarController != null){
+ mNavigationBarController.show(mDisplayId);
+ }
+ // mNavigationBarController.createNavigationBars(true /* includeDefaultDisplay */, result);
+ // getNavigationBarView().setVisibility(View.VISIBLE);
+
+ }
+ }
+ };
+
@Override
public void start() {
mScreenLifecycle.addObserver(mScreenObserver);
@@ -997,6 +1027,10 @@ public class StatusBar extends SystemUI implements
mCommandQueue.setIcon(result.mIcons.keyAt(i), result.mIcons.valueAt(i));
}
+ IntentFilter intentFilter = new IntentFilter();
+ intentFilter.addAction("hide_status");
+ intentFilter.addAction("show_status");
+ mContext.registerReceiver(mReceiver,intentFilter );
if (DEBUG) {
Log.d(TAG, String.format(
diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/window/StatusBarWindowController.java b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/window/StatusBarWindowController.java
index 85a6cd224b..bff17b6b46 100644
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/window/StatusBarWindowController.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/window/StatusBarWindowController.java
@@ -119,6 +119,14 @@ public class StatusBarWindowController {
if (DEBUG) Log.v(TAG, "defineSlots");
}
+ public void show(){
+ mStatusBarWindowView.setVisibility(View.VISIBLE);
+ }
+
+
+ public void hide(){
+ mStatusBarWindowView.setVisibility(View.GONE);
+ }
/**
* Adds the status bar view to the window manager.
*/
@@ -127,7 +135,6 @@ public class StatusBarWindowController {
// translucent backdrop, the entire thing is made TRANSLUCENT and is
// hardware-accelerated.
mLp = getBarLayoutParams(mContext.getDisplay().getRotation());
-
mWindowManager.addView(mStatusBarWindowView, mLp);
mLpChanged.copyFrom(mLp);