Android导航栏功能项的显示与屏蔽介绍
Android 的导航栏有诸多功能,例入 截屏,音量加,音量减,最近任务,菜单.返回,主页面,输入法开关 ......
代码源路径:frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\NavigationBarView.java
public ButtonDispatcher getScreenshotButton() {
return mButtonDispatchers.get(R.id.screenshot);
}
public ButtonDispatcher getVolumeAddButton() {
return mButtonDispatchers.get(R.id.volume_add);
}
public ButtonDispatcher getVolumeSubButton() {
return mButtonDispatchers.get(R.id.volume_sub);
}
public ButtonDispatcher getRecentsButton() {
return mButtonDispatchers.get(R.id.recent_apps);
}
public ButtonDispatcher getMenuButton() {
return mButtonDispatchers.get(R.id.menu);
}
public ButtonDispatcher getBackButton() {
return mButtonDispatchers.get(R.id.back);
}
public ButtonDispatcher getHomeButton() {
return mButtonDispatchers.get(R.id.home);
}
public ButtonDispatcher getImeSwitchButton() {
return mButtonDispatchers.get(R.id.ime_switcher);
}
public ButtonDispatcher getAccessibilityButton() {
return mButtonDispatchers.get(R.id.accessibility_button);
}
Android 即在此类中完成对 Button图标 的选择 .
若需要展示/隐藏对应的 功能选项时,需要在此处修改:
private void prepareNavigationBarView() {
mNavigationBarView.reorient();
ButtonDispatcher recentsButton = mNavigationBarView.getRecentsButton();
recentsButton.setOnClickListener(this::onRecentsClick);
recentsButton.setOnTouchListener(this::onRecentsTouch);
recentsButton.setLongClickable(true);
recentsButton.setOnLongClickListener(this::onLongPressBackRecents);
ButtonDispatcher backButton = mNavigationBarView.getBackButton();
backButton.setLongClickable(true);
backButton.setOnLongClickListener(this::onLongPressBackRecents);
ButtonDispatcher homeButton = mNavigationBarView.getHomeButton();
homeButton.setOnTouchListener(this::onHomeTouch);
homeButton.setOnLongClickListener(this::onHomeLongClick);
ButtonDispatcher accessibilityButton = mNavigationBarView.getAccessibilityButton();
accessibilityButton.setOnClickListener(this::onAccessibilityClick);
accessibilityButton.setOnLongClickListener(this::onAccessibilityLongClick);
updateAccessibilityServicesState(mAccessibilityManager);
ButtonDispatcher screenshotButton = mNavigationBarView.getScreenshotButton();
screenshotButton.setOnClickListener(this:: screenshotClick);
screenshotButton.setOnTouchListener(this:: screenshotTouch);
boolean isShow=Settings.System.getInt(getContext().getContentResolver(), Settings.System.SCREENSHOT_BUTTON_SHOW, 1) == 1;
if(isShow){
screenshotButton.setVisibility(View.VISIBLE);
}else{
screenshotButton.setVisibility(View.GONE);
}
ButtonDispatcher volumeAddButton=mNavigationBarView.getVolumeAddButton();
ButtonDispatcher volumeSubButton=mNavigationBarView.getVolumeSubButton();
boolean isShowVolumeButton="true".equals(SystemProperties.get("ro.rk.systembar.voiceicon","true"));
if(isShowVolumeButton){
volumeAddButton.setVisibility(View.VISIBLE);
volumeSubButton.setVisibility(View.VISIBLE);
}else{
volumeAddButton.setVisibility(View.GONE);
volumeSubButton.setVisibility(View.GONE);
}
if (getContext().getResources().getConfiguration().smallestScreenWidthDp < 400) {
volumeAddButton.setVisibility(View.GONE);
volumeSubButton.setVisibility(View.GONE);
}
}
可以将对应的Button 设置 setVisibility(View.GONE / View.INVISIBLE / View.VISIBLE);
当加上setVisibility时,UI界面还没显示时,需要注意config.xml中是否有写进去需要的Button .
frameworks\base\packages\SystemUI\res\values\config.xml
<string name="config_navBarLayout" translatable="false">left;volume_sub,back,home,recent,volume_add;right</string>
需要注意的是,config中配置的顺序 即为 UI的显示顺序 .
提一嘴,如果需要用到屏蔽状态栏以及任务栏,可以将如下status_bar_height 的高度设为0.
frameworks\base\core\res\res\values\dimens.xml
<!-- Height of the status bar -->
<dimen name="status_bar_height">0dp</dimen>
到此这篇关于Android导航栏功能项的显示与屏蔽介绍的文章就介绍到这了,更多相关Android导航栏内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Android 使用Retrofit 以纯二进制文件流上传文件的操作代码
文章介绍了如何在Android项目中使用Retrofit通过纯二进制文件流上传文件,包括单个文件流上传和大文件分段上传的方法,并详细描述了需求协议、接口定义、RequestInterceptor的使用以及相关库的调用,感兴趣的朋友跟随小编一起看看吧2024-11-11
Android AndBase框架使用封装好的函数完成Http请求(三)
这篇文章主要介绍了Android AndBase框架使用封装好的函数完成Http请求的相关资料,感兴趣的小伙伴们可以参考一下2016-03-03
Android即时通讯设计(腾讯IM接入和WebSocket接入)
本文主要介绍了Android即时通讯设计(腾讯IM接入和WebSocket接入),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-04-04
Android中ViewPager的PagerTabStrip与PagerTitleStrip用法实例
这篇文章主要介绍了Android中ViewPager的PagerTabStrip与PagerTitleStrip用法实例,这两个子控件一般被用作添加标题,在实际效果上并不是那么好控制,使用的时候需要谨慎,需要的朋友可以参考下2016-06-06
通知监控NotificationListenerService onNotificationPosted重复回
这篇文章主要为大家介绍了通知监控NotificationListenerService onNotificationPosted重复回调问题解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-02-02


最新评论