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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

状态栏的工具类(支持多种版本类型)

發布時間:2023/12/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 状态栏的工具类(支持多种版本类型) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

這是我根據手機不同的版本,不同API設置狀態欄的幾種方法,總結了一個工具類,希望對大家有幫助,拿走不謝!!!

public class StatusBarManager {/*** 僅僅讓狀態欄透明,布局類容位于狀態下方*/public static void translucentStatusBar(Activity activity) {if (!SystemFacade.hasKitKat()) {return;}//如果系統版本大于API 19 小于 API 小于 API 21if (SystemFacade.hasKitKat() && !SystemFacade.hasLollipop()) {Window window = activity.getWindow();//在 4.4 api 19 和 API 20 添加FLAG_TRANSLUCENT_STATUS 是讓系統狀態欄為透明,同時系統會自動設置View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE//所以布局延伸到了狀態下面window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);} else if (SystemFacade.hasLollipop()) {Window window = activity.getWindow();//添加Flag把狀態欄設為可繪制模式window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);//設置狀態欄為透明window.setStatusBarColor(Color.TRANSPARENT);}}/*** 改變狀態欄為透明并讓布局延伸到狀態底部*/public static void immersive(Activity activity) {if (!SystemFacade.hasKitKat()) {return;}//如果系統版本大于API 19 小于 API 小于 API 21if (SystemFacade.hasKitKat() && !SystemFacade.hasLollipop()) {Window window = activity.getWindow();//在 4.4 api 19 和 API 20 添加FLAG_TRANSLUCENT_STATUS 是讓系統狀態欄為透明,同時系統會制動設置View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE//所以布局延伸到了狀態下面window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);} else if (SystemFacade.hasLollipop()) {Window window = activity.getWindow();//添加Flag把狀態欄設為可繪制模式window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);//設置狀態欄為透明window.setStatusBarColor(Color.TRANSPARENT);//設置讓布局延伸到狀態欄下面window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE| View.SYSTEM_UI_FLAG_FULLSCREEN| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);}}/*** 改變狀態欄為透明并讓布局延伸到狀態底部*/public static void translucentStatusBarAndImmersive(Activity activity) {if (!SystemFacade.hasKitKat()) {return;}//如果系統版本大于API 19 小于 API 小于 API 21if (SystemFacade.hasKitKat() && !SystemFacade.hasLollipop()) {Window window = activity.getWindow();//在 4.4 api 19 和 API 20 添加FLAG_TRANSLUCENT_STATUS 是讓系統狀態欄為透明,同時系統會制動設置View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE//所以布局延伸到了狀態下面window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);} else if (SystemFacade.hasLollipop()) {Window window = activity.getWindow();//添加Flag把狀態欄設為可繪制模式window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);//設置狀態欄為透明window.setStatusBarColor(Color.TRANSPARENT);//設置讓布局延伸到狀態欄底部window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);}}/*** 設置狀態欄字體為灰色*/public static void lightStatusBar(Activity activity) {if (SystemFacade.hasM()) {int flag = activity.getWindow().getDecorView().getSystemUiVisibility();if ((flag | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) != flag) { // 如果狀態欄字體不是灰色activity.getWindow().getDecorView().setSystemUiVisibility(flag ^ View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);}}}/*** 設置狀態欄字體為白色*/public static void darkStatusBar(Activity activity) {if (SystemFacade.hasM()) {int flag = activity.getWindow().getDecorView().getSystemUiVisibility();if ((flag | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) == flag) { // 如果狀態欄字體不是白色//flag &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;//activity.getWindow().getDecorView().setSystemUiVisibility(flag);activity.getWindow().getDecorView().setSystemUiVisibility(flag ^ View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);}}}/*** 設置狀態欄顏色*/public static void setStatusBarColor(Activity activity, int color) {if (!SystemFacade.hasKitKat()) {return;}//如果系統版本大于API 19 小于 API 小于 API 21if (SystemFacade.hasKitKat() && !SystemFacade.hasLollipop()) {Window window = activity.getWindow();//在 4.4 api 19 和 API 20 添加FLAG_TRANSLUCENT_STATUS 是讓系統狀態欄為透明,同時系統會制動設置View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE//所以布局延伸到了狀態下面window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);createOrChangeMockStatusBarColor(activity, color);ViewGroup contentView = activity.getWindow().findViewById(android.R.id.content);View rootView = contentView.getChildAt(0);if (rootView != null) {rootView.setFitsSystemWindows(true);}} else if (SystemFacade.hasLollipop()) {Window window = activity.getWindow();//添加Flag把狀態欄設為可繪制模式window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);//設置狀態欄顏色window.setStatusBarColor(color);}}/*** 因此底部導航欄,*/public static void hideNavigationBar(Activity activity) {//隱藏虛擬按鍵,并且全屏if (Build.VERSION.SDK_INT < 19) { // lower apiView v = activity.getWindow().getDecorView();v.setSystemUiVisibility(View.GONE);} else {//for new api versions.View decorView = activity.getWindow().getDecorView();// 如果不設置SYSTEM_UI_FLAG_IMMERSIVE_STICKY ,那么在點擊屏幕時候底部導航欄會彈出,相當于View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 不起作用,被清除int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;decorView.setSystemUiVisibility(uiOptions);}}private static final String MOCK_STATUS_BAR_VIEW = "mock_status_bar";private static void createOrChangeMockStatusBarColor(Activity activity, int color) {Window window = activity.getWindow();ViewGroup mDecorView = (ViewGroup) window.getDecorView();View fakeView = mDecorView.findViewWithTag(MOCK_STATUS_BAR_VIEW);if (fakeView != null) {fakeView.setBackgroundColor(color);} else {View mockView = new View(activity);FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, SystemFacade.getScreenHeight(activity));layoutParams.gravity = Gravity.TOP;mockView.setLayoutParams(layoutParams);mockView.setBackgroundColor(color);mockView.setTag(MOCK_STATUS_BAR_VIEW);mDecorView.addView(mockView);}}private boolean isXiaomi(String brand) {return brand.contains("xiaomi");}private boolean isMeizu(String brand) {return brand.contains("meizu");}}

?

總結

以上是生活随笔為你收集整理的状态栏的工具类(支持多种版本类型)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧洲mv日韩mv国产 | xxx性欧美 | 国产无遮无挡120秒 欧美综合图片 | 特黄级| 天天插天天插 | 91在线播放视频 | av人人干| 久久精品视频播放 | 96免费视频| 欧美视频色| 色无极亚洲影院 | 黄色三级网站在线观看 | 午夜免费av | 天天鲁一鲁摸一摸爽一爽 | 国产午夜精品一区二区三区嫩草 | 91在线高清视频 | 嫩草亚洲| 国内精品99| 欧美一区二区三区久久久 | 波多野结衣视频免费观看 | 龚玥菲一级淫片 | 亚洲色图在线视频 | 国产成人午夜精品无码区久久 | 老男人av| 欧美熟妇另类久久久久久不卡 | 黄色av电影网址 | 国产精品嫩 | 精品性久久 | 日本美女久久 | 国产成人午夜精品无码区久久 | 丰满人妻翻云覆雨呻吟视频 | 亚洲黄色片免费看 | 久久精品在线 | 911国产| 少妇裸体淫交视频免费看高清 | 精品h| 国产精品入口免费 | 精品少妇一区二区 | av手机天堂 | 精品一区二区三区毛片 | 国产宾馆实践打屁股91 | 精品视频在线免费看 | 国产在线视频一区二区 | 日本欧美三级 | 少妇第一次交换又紧又爽 | www.九色 | 欧美日本在线 | 欧美日韩啪啪 | av色图在线| 欧美精品日韩 | 成人有色视频 | 一级做a在线观看 | 欧美日韩精品一区二区在线观看 | 欧美肥老妇视频九色 | 爱情岛亚洲论坛入口 | 一区二区三区日韩 | 致命弯道8在线观看免费高清完整 | 天天干天天天天 | 老牛影视少妇在线观看 | 欧美精品一区二区蜜桃 | 黄色网页免费观看 | 欧美日韩一本 | 午夜一本| 久久叉| 国产草草影院ccyycom | 亚洲区欧美 | 精品国产一区三区 | 宅男噜噜噜666在线观看 | 操操操影院 | 久久成人精品一区二区 | 免费黡色av | 国产日韩欧美在线播放 | 国产精品九九 | 日韩欧美在线观看免费 | av久热| 欧美性大战xxxxx久久久 | 婷婷综合在线观看 | 久艹伊人 | 蜜臀aⅴ免费一区二区 | 成人区人妻精品一区二区网站 | 午夜婷婷丁香 | 久久精品99久久久 | 99热这里只有精 | 亚洲有吗在线 | 狠狠爱av| 欧美视频1区 | 日韩欧美成人网 | 精品一区二区三区久久久 | 亚洲最大看欧美片网站 | 亚洲色图欧美另类 | 国产夫妻av | 日本成人在线免费观看 | 青青青青青草 | 伊人66| 久久四色 | 成人看片黄a免费看视频 | 天堂av在线电影 | 日本高清www免费视频 | 天海翼中文字幕 |