您的位置:首页 > 移动开发 > Android开发

android4.4 动态全局隐藏显示StatusBar

2015-10-24 14:55 525 查看
WindowManagerService.java添加如下函数

public void showStatusBarHeight(boolean enable){
//mPolicy引用PhoneWindowManager对象
mPolicy.setStatusBarHeightShow(enable);
}


frameworks/base/core/java/android/view/IWindowManager.aidl添加

void showStatusBarHeight(boolean enable);

WindowManagerPolicy.java添加

public void setStatusBarHeightShow(boolean enabled);

PhoneWindowManager.java添加

public void setStatusBarHeightShow(boolean enabled){
if(enabled){
Resources mResources = mContext.getResources();
mStatusBarHeight =
mResources.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_height);
} else{
mStatusBarHeight = 0;
}
}


PhoneStatusBar.java

makeStatusBarView()函数内修改
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(ACTION_DEMO);
//wwd add
filter.addAction("android.intent.action.DISPLAY_STATUS_BAR");
filter.addAction("android.intent.action.HIDE_STATUS_BAR");
//wwd add

private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
else if (action.equals("android.intent.action.DISPLAY_STATUS_BAR")) {
mStatusBarWindow.setVisibility(View.VISIBLE);
try {
mWindowManagerService.showStatusBarHeight(true);
} catch (RemoteException ex) {
}
} else if (action.equals("android.intent.action.HIDE_STATUS_BAR")) {
Log.i("wwd","mStatusBarView.isAttachedToWindow");
mStatusBarWindow.setVisibility(View.GONE);
try {
mWindowManagerService.showStatusBarHeight(false);
} catch (RemoteException ex) {
}
}
}


到此framework内代码添加完毕,在自己需要的时候发送广播”android.intent.action.DISPLAY_STATUS_BAR”和”android.intent.action.HIDE_STATUS_BAR”就能全局显示和隐藏statusbar。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: