java状态栏工具类,显示隐藏状态栏,设置状态栏颜色,沉浸式,透明状态栏(代码片段)

author author     2022-12-23     192

关键词:

public class NavigationUtils 

    private static int mNavigationbarColor = Color.BLACK;

    // 显示状态栏
    public static void showStatusbar(Window window) 
        if (window == null) 
            return;
        
        if (isDeviceVersionBelowLollipop()) 
            return;
        
        window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    

    // 隐藏状态栏
    public static void hideStatusbar(Window window) 
        if (window == null) 
            return;
        
        if (isDeviceVersionBelowLollipop()) 
            return;
        
        window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    

    // 设置状态栏的背景色
    public static void setStatusbarBgColor(Window window) 
        if (window == null) 
            return;
        
        if (isDeviceVersionBelowLollipop()) 
            return;
        
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.setStatusBarColor(Color.parseColor("#3F000000"));
    

    // 导航栏变成透明的
    public static void hideNavigationbar(Window window) 
        if (window == null) 
            return;
        
        if (isDeviceVersionBelowLollipop()) 
            return;
        
        if (isDeviceVersionBelowM()) 
            window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
         else 
            mNavigationbarColor = window.getNavigationBarColor();
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setNavigationBarColor(Color.TRANSPARENT);
        
    

    // 取消导航栏透明
    public static void showNavigationbar(Window window) 
        if (window == null) 
            return;
        
        if (isDeviceVersionBelowLollipop()) 
            return;
        
        if (isDeviceVersionBelowM()) 
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
         else 
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setNavigationBarColor(mNavigationbarColor);
        
    

    public static void hideNaviAndStatusBar(Window window) 
        hideNavigationbar(window);
        hideStatusbar(window);
    

    public static void showNaviAndStatusBar(Window window) 
        showNavigationbar(window);
        showStatusbar(window);
    

    private static boolean isDeviceVersionBelowLollipop() 
        return Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP;
    

    private static boolean isDeviceVersionBelowM() 
        return Build.VERSION.SDK_INT < Build.VERSION_CODES.M;
    

    // 设置view可以放到navigation的下面
    public static void translucentNavigationLayout(Window window) 
        if (window == null) 
            return;
        
        if (isDeviceVersionBelowLollipop()) 
            return;
        

        View decorView = window.getDecorView();
        int uiFlag = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
        decorView.setSystemUiVisibility(uiFlag);
    

    /**
     * 使用沉浸式模式,导航栏和状态栏都隐藏
     */
    @TargetApi(Build.VERSION_CODES.KITKAT)
    public static boolean useImmersiveMode(Window window) 
        if (window == null) 
            return false;
        

        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) 
            return false;
        

        // 透明状态栏
        window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        // 透明导航栏
        window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
        window.getDecorView()
            .setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);

        return true;

    


隐藏 NavBar 但显示带背景的状态栏

】隐藏NavBar但显示带背景的状态栏【英文标题】:HideNavBarbutshowstatusbarwithbackground【发布时间】:2016-09-2420:57:06【问题描述】:我的导航栏设置为在滚动时隐藏,但它也会在滚动时使用我的状态栏的背景颜色,在我滚动时在我的... 查看详情

如果显示视图控制器,状态栏不会隐藏

】如果显示视图控制器,状态栏不会隐藏【英文标题】:Statusbarwon\'thideifviewcontrollerispresented【发布时间】:2017-05-1921:51:12【问题描述】:我的项目中有多个故事板。我在一个情节提要中有一个主页视图控制器,并且我在一个单... 查看详情

隐藏状态栏但显示操作栏

】隐藏状态栏但显示操作栏【英文标题】:HideStatusBarbutdisplayactionbar【发布时间】:2014-10-1416:41:54【问题描述】:状态栏是显示电池、时间的地方,动作栏是标题栏。我想在我的应用中隐藏状态栏但显示动作栏。可以吗?【问题... 查看详情

隐藏 UINavigationBar 但仍显示状态栏

】隐藏UINavigationBar但仍显示状态栏【英文标题】:HideUINavigationBarbutstillshowStatusBar【发布时间】:2014-04-2317:34:19【问题描述】:如何通过不在我的应用中隐藏状态栏来隐藏导航栏?当我尝试[self.navigationController.navigationBarsetHidden:YES... 查看详情

UIImagePickerController 隐藏状态栏 iOS 8

】UIImagePickerController隐藏状态栏iOS8【英文标题】:UIImagePickerControllerhidingstatusbariOS8【发布时间】:2015-04-2105:36:39【问题描述】:我希望在我的应用中隐藏状态栏。在我的pList中,我设置了:状态栏最初是隐藏的-是查看基于控制器... 查看详情

如何在主屏幕和子屏幕中显示状态栏和隐藏状态栏

】如何在主屏幕和子屏幕中显示状态栏和隐藏状态栏【英文标题】:Howtoshowthestatusbarandhidestatusbarsinmainscreensandsubscreens【发布时间】:2020-01-1022:54:18【问题描述】:我需要在所有主屏幕中显示状态栏,并且需要在所有子屏幕中隐... 查看详情

工具栏覆盖状态栏

】工具栏覆盖状态栏【英文标题】:toolbaroverlaysstatusbar【发布时间】:2015-11-2914:25:36【问题描述】:我正在尝试通过使用使状态栏透明真的状态栏显示透明,但问题是工具栏覆盖在状态栏上。工具栏是半可见的,位于状态栏后面... 查看详情

启动时无法隐藏状态栏

】启动时无法隐藏状态栏【英文标题】:Can\'thidestatusbaronlaunch【发布时间】:2016-03-2814:23:53【问题描述】:我正在构建一个带有horizontal页面导航的iOS9应用程序,需要在某些页面上显示状态栏,并在其他页面上隐藏它。我想使用... 查看详情

启动时无法隐藏状态栏

】启动时无法隐藏状态栏【英文标题】:Can\'thidestatusbaronlaunch【发布时间】:2016-03-2814:23:53【问题描述】:我正在构建一个带有horizontal页面导航的iOS9应用程序,需要在某些页面上显示状态栏,并在其他页面上隐藏它。我想使用... 查看详情

在横向模式下隐藏状态栏旋转时留下空白

】在横向模式下隐藏状态栏旋转时留下空白【英文标题】:hidestatusbarinlandscapemodeleaveablankspacewhenrotating【发布时间】:2011-04-1501:31:40【问题描述】:我的应用程序支持在横向模式下显示某些屏幕,在横向模式下,我设置隐藏状态... 查看详情

Cordova 在显示初始屏幕期间隐藏状态栏

】Cordova在显示初始屏幕期间隐藏状态栏【英文标题】:Cordovahidestatusbarduringshowsplashscreen【发布时间】:2017-01-1108:30:43【问题描述】:通过插件cordova-plugin-splashscreen显示的闪屏。但是当应用程序启动并显示启动画面时,状态栏并... 查看详情

导航栏状态,显示和隐藏底部导航栏

】导航栏状态,显示和隐藏底部导航栏【英文标题】:navigationbarstates,showingandhidingthebottomnavbar【发布时间】:2016-03-2400:08:56【问题描述】:请记住以下问题,我仍然是iOS菜鸟。所以我了解如何隐藏/显示/重新着色导航栏等等。我... 查看详情

如何显示最初从 plist iphone 中隐藏的状态栏

】如何显示最初从plistiphone中隐藏的状态栏【英文标题】:Howtoshowstatusbarinitiallyhiddenfromplistiphone【发布时间】:2012-01-2120:25:52【问题描述】:我想在启动应用程序时隐藏状态栏以查看状态栏覆盖的启动图像。所以在plist中我添加... 查看详情

Swift UI 单击导航栏链接隐藏状态栏在后面

】SwiftUI单击导航栏链接隐藏状态栏在后面【英文标题】:SwiftUIClickingnavigationbarlinkhidesstatusbaronback【发布时间】:2021-11-0821:23:01【问题描述】:我编写了一个简单的SwiftUI应用程序,它在导航工具栏上创建一个NavigationLink,并在显... 查看详情

状态栏仍然显示

】状态栏仍然显示【英文标题】:StatusBarStillShowing【发布时间】:2013-09-0218:17:56【问题描述】:我真的很沮丧!我已经尝试了各种可行的方法来摆脱我应用顶部的UIStatusBar...我试过了:在IB中将状态栏设置为“无”在应用程序启... 查看详情

android基础篇显示隐藏状态栏和导航栏(代码片段)

一、AppTheme主题配置全屏属性<itemname="android:windowFullscreen">true</item>二、Activity的setContentView之前设置全屏的flaggetWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowMana 查看详情

浏览器工具栏为啥会自动隐藏

...;  2、菜单栏前有个黑色的对钩,说明菜单栏是显示状态的点击菜单栏选项;  3、在网页显示栏位置右击,弹出对话框,可以看到菜单栏前是没有对钩的,说明菜单栏处于隐藏状态点击菜单栏,点击关闭即可。 查看详情

android状态栏的设置

...题栏。其实在我的手机更新系统之前,隐藏了ActionBar后,状态栏和自定义的导航栏颜色是相匹配的,不知道什么原因现在默认为灰色了。上面使用的主题虽然隐藏了标题栏,但是和我们自定义的导航栏不搭,这时候我们可以选择... 查看详情