日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android5.1永久隐藏工具栏定制

發布時間:2023/12/14 Android 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android5.1永久隐藏工具栏定制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近有個需求: 勾選"永久隱藏工具欄"時,要求導航欄隱藏,狀態欄不隱藏。

一. 源碼中找到/packages/apps/Settings/src/com/android/settings/DisplaySettings.java:

可以看到勾選"永久隱藏工具欄"時發送了個廣播,

@Override
??? public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
??????? if(preference == mSystemBarHide)
?? ?{
?? ???? if(mSystemBarHide.isChecked()){
?? ??? ?Intent i = new Intent("com.cdhx.removebar");
?? ??? ?getActivity().sendBroadcast(i);
?? ???? } else {
?? ??? ?Intent i = new Intent("com.cdhx.addbar");
?? ??? ?getActivity().sendBroadcast(i);
?? ???? }
??????? }
??????? return super.onPreferenceTreeClick(preferenceScreen, preference);
??? }

二. 在/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java:

2.1.找到對應的廣播動作:

else if("com.cdhx.removebar".equals(action)) {
????????????????????? Settings.System.putInt(mContext.getContentResolver(), Settings.System.SYSTEMBAR_HIDE,1);
?????????????????????? mHandler.removeMessages(MSG_CHANGE_BAR_HIDE_STATUS);
?????????????????????? mHandler.sendEmptyMessageDelayed(MSG_CHANGE_BAR_HIDE_STATUS, 400);
??????????? }

2.2.對應的更新UI消息:

case MSG_CHANGE_BAR_HIDE_STATUS:
?????????????????????? changeBarHideStatus();
?????????????????????? break;

找到changeBarHideStatus();

?private void changeBarHideStatus()
??????? {
??????????? boolean hide_systembar = Settings.System.getInt(mContext.getContentResolver(),Settings.System.SYSTEMBAR_HIDE,0)==1;

??????????? if(hide_systembar)
??????????????? removeBar(false);
??????????? else{
??????????????? addBarInside(hide_systembar);? ?
??????????? }
??????? }

三.找到removeBar( ):

private void removeBar(boolean needToast){
??????????????? if (mBarIsAdd){
??????????????????????? Log.d(TAG,"remove Bar");
?? ??? ??? ??? ??? ?if(mContext.getResources().getConfiguration().enableMultiWindow()){
?? ??? ??? ??? ??? ??? ?try {
?? ??? ??? ??? ???????????? mWindowManagerService.changeTitleBar(false);
?? ??? ??? ??? ???????? } catch (RemoteException e) {
?? ??? ??? ??? ???????????? Log.w(TAG, "Error changeTitleBar transition: " + e);
?? ??? ??? ??? ???????? }
?? ??? ??? ??? ??? ???? }
??????????????????????? if (mNavigationBarView != null){
??????????????????????????????? mWindowManager.removeViewImmediate(mNavigationBarView);
?????????????????????? }
?????????????????????? if (!mContext.getResources().getConfiguration().enableMultiWindow()&&mStatusBarWindow != null)
?? ??? ??? ?? ??? ? ?? ??????? mStatusBarWindow.setVisibility(View.GONE);

????????????????????? if(signalCluster_win!=null)
?? ??? ??? ??? ??? ?????? signalCluster_win=null;
?? ??? ??? ??? ??? ?? if (mNavigationBarView != null)
?? ??? ??? ??? ??? ?????? mNavigationBarView = null;
?? ??? ??? ??? ??? ??? ? ?
????????????????????? if(mNotificationLite != null){
?? ??? ??? ???????????? mNotificationLite.closeCenter();
?? ??? ??? ?????????? }
??????????????????????? mBarIsAdd = false;
??????????????????????? if(!isMultiChange)
??????????????????????? Toast.makeText(mContext, mContext.getResources().getString(R.string.hidebar_msg)
, 1000).show();
??????????????? }
??????? }

可以看到如上加厚的狀態欄這句。將其注釋掉,即可實現勾選"永久隱藏工具欄"時,導航欄隱藏而狀態欄不隱藏。

總結

以上是生活随笔為你收集整理的Android5.1永久隐藏工具栏定制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。