Android通过修改Framework隐藏系统状态栏
来源:互联网 发布:淘宝商城网上购物 编辑:程序博客网 时间:2024/06/03 17:53
Android通过修改Framework隐藏系统状态栏
其实,真的需要完全隐藏系统状态栏的需求并不是很多,只有一些定制性的需求的时候才有这样的要求,这次就是这样的要求,需要完全隐藏系统状态栏,考虑修改Framework的SystemUI来实现。这些需要使用源码开发环境,我们修改以后,需要启动模拟器测试效果。
我们主要是想通过隐藏StatusBar来消除通知栏,在%Android_Source%/frameworks/base/packages/SystemUI/src下我们可以找到com.android.systemui.statusbar包下面的BaseStatusBar.java文件,查看源码,发现在start()方法中有调用一个抽象方法createAndAddWindows();查看这个抽象方法的实现,有%Android_Source%/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java和%Android_Source%/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/tablet/TabletStatusBar.java,这是两种不同模式下的处理,这里我们测试修改PhoneStatusBar里面的代码:
@Override
public void createAndAddWindows() {
addStatusBarWindow();
}
调用了addStatusBarWindow();方法,在这个方法中:
private void addStatusBarWindow() {
// Put up the view
final int height = getStatusBarHeight();// Now that the status bar window encompasses the sliding panel and its
// translucent backdrop, the entire thing is made TRANSLUCENT and is
// hardware-accelerated.
final WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
height,
WindowManager.LayoutParams.TYPE_STATUS_BAR,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING
| WindowManager.LayoutParams.FLAG_SPLIT_TOUCH,
PixelFormat.TRANSLUCENT);lp.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
lp.gravity = getStatusBarGravity();
lp.setTitle(“StatusBar”);
lp.packageName = mContext.getPackageName();makeStatusBarView();
WindowManagerImpl.getDefault().addView(mStatusBarWindow, lp);
}
我们看到调用了makeStatusBarView();方法,在这个方法最后返回前,我们添加一行代码
mStatusBarView.setVisibility(View.GONE);
把它隐藏。然后重新编译framework,启动模拟器,可以看到系统状态栏确实看不到了,但是状态栏的位置还在,一片黑色罢了。
继续尝试修改,找到%Android_Source%/frameworks/base/core/res/res/values/dimens.xml
修改<dimen name=”status_bar_height”>25dip</dimen>为<dimen name=”status_bar_height”>0dip</dimen>
再次编译framework,重启模拟器测试。效果如下,达到预期效果。
最近开始研究framework的东西,欢迎大家一起交流~
- Android通过修改Framework隐藏系统状态栏
- Android通过修改Framework隐藏系统状态栏
- Android通过修改Framework隐藏系统状态栏
- 修改Framework隐藏系统状态栏
- Android系统隐藏系统状态栏
- android APP隐藏NavigationBar,通过修改framework隐藏/显示 navigation bar
- android 修改系统状态栏(StatusBar)
- Android 4.2 通过修改FrameWork源码实现动态隐藏导航栏,实现全屏
- Android 隐藏系统状态栏和标题栏
- Android 系统栏,状态栏的隐藏
- Android开发UI之隐藏系统状态栏
- Android Studio隐藏标题栏和系统状态栏
- android 系统状态栏的隐藏和显示
- Android framework系统默认设置修改
- Android framework系统默认设置修改
- Android framework系统默认设置修改
- Android framework系统默认设置修改
- Android framework系统默认设置修改
- 论文:Recommendation Based on Contextual Opinions 总结
- android.content.ActivityNotFoundException 出现原因分析
- iOS中比较时间的方法
- 安卓调试注意
- 通过Xfire开发web service接口和客户端调用web service接口接口方法
- Android通过修改Framework隐藏系统状态栏
- 1053. Path of Equal Weight
- Sublime Text 3 快捷键汇总
- android值得珍藏的6个开源框架技术
- Android使用HttpURLConnection发送Get请求
- Java实现敏感词过滤
- 黑马程序员——java设计模式
- 黑马程序员——增强型readLine()加行号
- 关于注解