如何实现Android导航栏功能项的显示与屏蔽
如何实现Android导航栏功能项的显示与屏蔽
这篇文章给大家分享的是有关如何实现Android导航栏功能项的显示与屏蔽的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
Android 的导航栏有诸多功能,例入 截屏,音量加,音量减,最近任务,菜单.返回,主页面,输入法开关 ......
代码源路径:frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\NavigationBarView.java
publicButtonDispatchergetScreenshotButton(){returnmButtonDispatchers.get(R.id.screenshot);}publicButtonDispatchergetVolumeAddButton(){returnmButtonDispatchers.get(R.id.volume_add);}publicButtonDispatchergetVolumeSubButton(){returnmButtonDispatchers.get(R.id.volume_sub);}publicButtonDispatchergetRecentsButton(){returnmButtonDispatchers.get(R.id.recent_apps);}publicButtonDispatchergetMenuButton(){returnmButtonDispatchers.get(R.id.menu);}publicButtonDispatchergetBackButton(){returnmButtonDispatchers.get(R.id.back);}publicButtonDispatchergetHomeButton(){returnmButtonDispatchers.get(R.id.home);}publicButtonDispatchergetImeSwitchButton(){returnmButtonDispatchers.get(R.id.ime_switcher);}publicButtonDispatchergetAccessibilityButton(){returnmButtonDispatchers.get(R.id.accessibility_button);}
Android 即在此类中完成对 Button图标 的选择 .
若需要展示/隐藏对应的 功能选项时,需要在此处修改:
privatevoidprepareNavigationBarView(){mNavigationBarView.reorient();ButtonDispatcherrecentsButton=mNavigationBarView.getRecentsButton();recentsButton.setOnClickListener(this::onRecentsClick);recentsButton.setOnTouchListener(this::onRecentsTouch);recentsButton.setLongClickable(true);recentsButton.setOnLongClickListener(this::onLongPressBackRecents);ButtonDispatcherbackButton=mNavigationBarView.getBackButton();backButton.setLongClickable(true);backButton.setOnLongClickListener(this::onLongPressBackRecents);ButtonDispatcherhomeButton=mNavigationBarView.getHomeButton();homeButton.setOnTouchListener(this::onHomeTouch);homeButton.setOnLongClickListener(this::onHomeLongClick);ButtonDispatcheraccessibilityButton=mNavigationBarView.getAccessibilityButton();accessibilityButton.setOnClickListener(this::onAccessibilityClick);accessibilityButton.setOnLongClickListener(this::onAccessibilityLongClick);updateAccessibilityServicesState(mAccessibilityManager);ButtonDispatcherscreenshotButton=mNavigationBarView.getScreenshotButton();screenshotButton.setOnClickListener(this::screenshotClick);screenshotButton.setOnTouchListener(this::screenshotTouch);booleanisShow=Settings.System.getInt(getContext().getContentResolver(),Settings.System.SCREENSHOT_BUTTON_SHOW,1)==1;if(isShow){screenshotButton.setVisibility(View.VISIBLE);}else{screenshotButton.setVisibility(View.GONE);}ButtonDispatchervolumeAddButton=mNavigationBarView.getVolumeAddButton();ButtonDispatchervolumeSubButton=mNavigationBarView.getVolumeSubButton();booleanisShowVolumeButton="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
<stringname="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
<!--Heightofthestatusbar--><dimenname="status_bar_height">0dp</dimen>
感谢各位的阅读!关于“如何实现Android导航栏功能项的显示与屏蔽”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
推荐阅读
-
怎么使用Android基准配置文件Baseline Profile方案提升启动速度
-
HTML5如何实现禁止android视频另存为
-
学java好还是学php好?
-
Android如何实现多点触控功能
-
android怎么实现多点触摸应用
-
Android怎么实现手势划定区域裁剪图片
-
android怎么实现简单的矩形裁剪框
-
Android单选多选按钮怎么使用
-
Android中如何利用oncreate获取控件高度或宽度
Android中如何利用oncreate获取控件高度或宽度本篇内容...
-
Android中怎么使用onSaveInstanceState()方法
Android中怎么使用onSaveInstanceState()方法...