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

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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值