当前位置:网站首页>21天学习挑战赛--第二天打卡(setSystemUiVisibility、导航栏、状态栏)
21天学习挑战赛--第二天打卡(setSystemUiVisibility、导航栏、状态栏)
2022-08-04 12:37:00 【孟芳芳】
1.setSystemUiVisibility(int visibility)
通过setSystemUiVisibility(int visibility)方法,可以改变状态栏或者其他系统UI的可见性。
getWindow().getDecorView().setSystemUiVisibility(int visibility);
可供选择的参数:
①View.SYSTEM_UI_FLAG_VISIBLE
默认模式,显示状态栏和导航栏
②View.SYSTEM_UI_FLAG_LOW_PROFILE
低调模式,隐藏不重要的状态栏图标,导航栏中相应的图标都变成了一个小点。点击状态栏或导航栏还原成正常的状态。
③SYSTEM_UI_FLAG_HIDE_NAVIGATION
隐藏导航栏,点击屏幕任意区域,导航栏将重新出现,并且不会自动消失。
④SYSTEM_UI_FLAG_FULLSCREEN
隐藏状态栏,点击屏幕区域不会出现,需要从状态栏位置下拉才会出现。
⑤SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
将布局内容拓展到导航栏和状态栏的后面。
2.获取状态栏、导航栏高度
①获取顶部状态栏statusBar高度
private int getStatusBarHeight() {
Resources resources = mActivity.getResources();
int resourceId = resources.getIdentifier( "status_bar_height", "dimen","android");
int height = resources.getDimensionPixelSize( resourceId);
Log.v("", "Status height:" + height);
return height;
}
②获取底部导航栏navigationBar高度
private int getNavigationBarHeight() {
Resources resources = mActivity.getResources();
int resourceId = resources.getIdentifier( "navigation_bar_height","dimen", "android");
int height = resources.getDimensionPixelSize( resourceId);
Log.v("", "Navi height:" + height);
return height;
}
③获取设备是否存在NavigationBar
public static boolean checkHasNavigationBar( Context context) {
boolean hasNavigationBar = false;
Resources rs = context.getResources();
int id = rs.getIdentifier( "config_showNavigationBar", "bool", "android");
if (id > 0) {
hasNavigationBar = rs.getBoolean(id);
}
try {
Class systemPropertiesClass = Class.forName("android.os.SystemProperties");
Method m = systemPropertiesClass.getMethod("get", String.class);
String navBarOverride = (String) m.invoke( systemPropertiesClass, "qemu.hw.mainkeys");
if ("1".equals(navBarOverride)) {
hasNavigationBar = false;
} else if ("0".equals(navBarOverride)) {
hasNavigationBar = true;
}
} catch (Exception e) {
}
return hasNavigationBar;
}
注:没显示导航栏的,方法二还是会返回导航栏的值,而不是返回0,所以要结合方法三使用
边栏推荐
- Ceres库运行,模板内报内存冲突问题。(已解决)
- Chinese valentine's day of young people crazy to make money, earn 140000 a week
- ES 节点2G内存分析
- Access Huawei game anti-addiction, click the anti-addiction pop-up window, the game crashes
- 动规(16)-并查集基础题——亲戚(Relations)
- Arduino框架下I2S控制ADC采样以及PWM输出示例解析
- 持续交付(二)PipeLine基本使用
- MySQL - Explain explanation
- 博云入选 Gartner 中国 DevOps 代表厂商
- “蔚来杯“2022牛客暑期多校训练营5 B、C、F、G、H、K
猜你喜欢
What is DevOps?Enough to read this one!
Cool and efficient data visualization big screen, it's really not that difficult to do!丨Geek Planet
“蔚来杯“2022牛客暑期多校训练营2 G、J、K
Focusing on data sources, data quality and model performance to build a credit profile of small and micro enterprises
倒计时 3 天|一起看云原生 Meetup 的六大议题
TensorFlow学习记录(三):高阶操作 & 神经网络与全连接层
使用COLMAP初步三维重建
七夕疯狂搞钱的年轻人,一周赚14万
num_workers
博云入选 Gartner 中国 DevOps 代表厂商
随机推荐
【PHP实现微信公众平台开发—基础篇】第1章 课程介绍
《独行月球》猛药,治不了开心麻花内耗
03 多线程与高并发 - ReentrantLock 源码解析
双目立体视觉笔记(二)
1314元的七夕礼盒,收割了多少直男?
拥有一台服务器,程序猿装X的开始
[牛客网]OR63删除公共字符
Django使用腾讯云发送短信并存入redis
【VSCode】一文详解vscode下安装vim后无法使用Ctrl+CV复制粘贴 使用Vim插件的配置记录
小程序在政务服务平台建设中如何发挥价值
持续交付(三)Jenkinsfile语法使用介绍
微信小程序使用腾讯云对象储存上传图片
Cache character stream
编辑器vscode Already included file name ‘xxx‘ differs from file name ‘xxx‘ only in casing报错
A discussion of integrated circuits
Analysis and comparison of mobile cross-end technical solutions
飞书更新招聘功能 候选人可选择面试时间
num_workers
跨链桥已成行业最大安全隐患 为什么和怎么办
抽奖/秒杀/竞价/评分/权威/投票,技术教你用合适的方法做好活动