Android導(dǎo)航欄功能項(xiàng)的顯示與屏蔽介紹
?Android 的導(dǎo)航欄有諸多功能,例入 截屏,音量加,音量減,最近任務(wù),菜單.返回,主頁面,輸入法開關(guān)?。?/strong>
代碼源路徑: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 即在此類中完成對(duì) Button圖標(biāo) 的選擇 .?
若需要展示/隱藏對(duì)應(yīng)的 功能選項(xiàng)時(shí),需要在此處修改:
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);
}
}
可以將對(duì)應(yīng)的Button 設(shè)置 setVisibility(View.GONE / View.INVISIBLE / View.VISIBLE);?
?當(dāng)加上setVisibility時(shí),UI界面還沒顯示時(shí),需要注意config.xml中是否有寫進(jìn)去需要的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的顯示順序 .
提一嘴,如果需要用到屏蔽狀態(tài)欄以及任務(wù)欄,可以將如下status_bar_height 的高度設(shè)為0.
?frameworks\base\core\res\res\values\dimens.xml
<!-- Height of the status bar -->
<dimen name="status_bar_height">0dp</dimen>
到此這篇關(guān)于Android導(dǎo)航欄功能項(xiàng)的顯示與屏蔽介紹的文章就介紹到這了,更多相關(guān)Android導(dǎo)航欄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Android 使用Retrofit 以純二進(jìn)制文件流上傳文件的操作代碼
文章介紹了如何在Android項(xiàng)目中使用Retrofit通過純二進(jìn)制文件流上傳文件,包括單個(gè)文件流上傳和大文件分段上傳的方法,并詳細(xì)描述了需求協(xié)議、接口定義、RequestInterceptor的使用以及相關(guān)庫的調(diào)用,感興趣的朋友跟隨小編一起看看吧2024-11-11
flutter 實(shí)現(xiàn)點(diǎn)擊下拉欄微信右上角彈出窗功能
這篇文章主要介紹了flutter 實(shí)現(xiàn)彈出窗點(diǎn)擊下拉欄微信右上角彈出窗功能,這段代碼使用的是PopupRoute這個(gè)路由類進(jìn)行實(shí)現(xiàn) 的,分步驟通過實(shí)例代碼講解的非常詳細(xì),需要的朋友可以參考下2021-05-05
Android AndBase框架使用封裝好的函數(shù)完成Http請(qǐng)求(三)
這篇文章主要介紹了Android AndBase框架使用封裝好的函數(shù)完成Http請(qǐng)求的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-03-03
Android即時(shí)通訊設(shè)計(jì)(騰訊IM接入和WebSocket接入)
本文主要介紹了Android即時(shí)通訊設(shè)計(jì)(騰訊IM接入和WebSocket接入),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
Android中ViewPager的PagerTabStrip與PagerTitleStrip用法實(shí)例
這篇文章主要介紹了Android中ViewPager的PagerTabStrip與PagerTitleStrip用法實(shí)例,這兩個(gè)子控件一般被用作添加標(biāo)題,在實(shí)際效果上并不是那么好控制,使用的時(shí)候需要謹(jǐn)慎,需要的朋友可以參考下2016-06-06
通知監(jiān)控NotificationListenerService onNotificationPosted重復(fù)回
這篇文章主要為大家介紹了通知監(jiān)控NotificationListenerService onNotificationPosted重復(fù)回調(diào)問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02
Kotlin與Java相互調(diào)用的完整實(shí)例
Kotlin的設(shè)計(jì)過程中就考慮到了與Java的互操作性,在Kotlin中可以直接調(diào)用既有的Java代碼,反過來在Java中也可以很流暢地使用Kotlin代碼,這篇文章主要給大家介紹了關(guān)于Kotlin與Java相互調(diào)用的相關(guān)資料,需要的朋友可以參考下2021-12-12
Android仿QQ長(zhǎng)按彈出刪除復(fù)制框
這篇文章主要為大家詳細(xì)介紹了Android仿QQ長(zhǎng)按彈出刪除、復(fù)制、轉(zhuǎn)發(fā)框,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-08-08

