# ImmersionBar **Repository Path**: fanshare/ImmersionBar ## Basic Information - **Project Name**: ImmersionBar - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2022-07-26 - **Last Updated**: 2022-07-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ImmersionBar **本项目是基于开源项目ImmersionBar进行ohos化的移植和开发的,可以通过项目标签以及github地址(https://github.com/gyf-dev/ImmersionBar )追踪到原项目版本** #### 项目介绍 - 项目名称:沉浸式状态栏和沉浸式导航栏管理 - 所属系列:ohos的第三方组件适配移植 - 功能:沉浸式状态栏管理,适配横竖屏切换、刘海屏、软键盘弹出等问题,可以修改状态栏字体颜色,Ability、Fraction、Dialog、Popup,一句代码轻松实现,以及对bar的其他设置 - 项目移植状态:完成 - 调用差异:无 - 项目作者和维护人:hihope - 联系方式:hihope@hoperun.com - 原项目Doc地址:https://github.com/gyf-dev/ImmersionBar - 原项目基线版本:v3.0.0 , sha1:d2099d682e5a89e62b9953a8430a76261f59da08 - 编程语言:Java - 外部库依赖:无 #### 效果展示 #### 安装教程 方法1. 1. 编译har包ImmersionBar.har。 2. 启动 DevEco Studio,将编译的har包,导入工程目录“entry->libs”下。 3. 在moudle级别下的build.gradle文件中添加依赖,在dependences标签中增加对libs目录下har包的引用。 ``` dependencies { implementation fileTree(dir: 'libs', include: ['*.jar', '*.har']) …… } ``` 4. 在导入的har包上点击右键,选择“Add as Library”对包进行引用,选择需要引用的模块,并点击“OK”即引用成功。 方法2. 1. 在工程的build.gradle的allprojects中,添加HAR所在的Maven仓地址 ``` repositories { maven { url 'http://106.15.92.248:8081/repository/Releases/' } } ``` 2. 在应用模块的build.gradle的dependencies闭包中,添加如下代码: ``` dependencies { implementation 'com.gyf.immersionbar.ohos:immersionbar:1.0.1' } ``` #### 使用说明 1. 基础用法 ```java ImmersionBar.with(this).init(); ``` 2. 高级用法(每个参数的意义) ```java ImmersionBar.with(getAbility()) .transparentNavigationBar() //透明导航栏,不写默认黑色(设置此方法,fullScreen()方法自动为true) .transparentBar() //透明状态栏和导航栏,不写默认状态栏为透明色,导航栏为黑色(设置此方法,fullScreen()方法自动为true) .statusBarColor(ResourceTable.Color_red) //状态栏颜色,不写默认透明色 .navigationBarColor(ResourceTable.Color_red) //导航栏颜色,不写默认黑色 .statusBarAlpha(100) //状态栏透明度,不写默认0 .navigationBarAlpha(100) //导航栏透明度,不写默认0 .barAlpha(100) //状态栏和导航栏透明度,不写默认0 .statusBarDarkFont(true) //状态栏字体是深色,不写默认为亮色 .navigationBarDarkIcon(true) //导航栏图标是深色,不写默认为亮色 .autoDarkModeEnable(true) //自动状态栏字体和导航栏图标变色,必须指定状态栏颜色和导航栏颜色才可以自动变色哦 .autoStatusBarDarkModeEnable(true,100) //自动状态栏字体变色,必须指定状态栏颜色才可以自动变色哦 .autoNavigationBarDarkModeEnable(true,100) //自动导航栏图标变色,必须指定导航栏颜色才可以自动变色哦 .fullScreen(true) //有导航栏的情况下,ability全屏显示,也就是ability最下面被导航栏覆盖,不写默认非全屏 .hideBar(BarHide.FLAG_HIDE_NAVIGATION_BAR) //隐藏状态栏或导航栏或两者,不写默认不隐藏 .addViewSupportTransformColor(toolbar) //设置支持component变色,可以添加多个component,不指定颜色,默认和状态栏同色,还有两个重载方法 .titleBar(component) //解决状态栏和布局重叠问题,任选其一 .titleBarMarginTop(component) //解决状态栏和布局重叠问题,任选其一 .statusBarView(component) //解决状态栏和布局重叠问题,任选其一 .fitsSystemWindows(true) //解决状态栏和布局重叠问题,任选其一,默认为false,当为true时一定要指定statusBarColor(),不然状态栏为透明色,还有一些重载方法 .supportActionBar(true) //支持ActionBar使用 .statusBarColorTransform(ResourceTable.Color_red) //状态栏变色后的颜色 .navigationBarColorTransform(ResourceTable.Color_red) //导航栏变色后的颜色 .barColorTransform(ResourceTable.Color_red) //状态栏和导航栏变色后的颜色 .removeSupportView(toolbar) //移除指定component支持 .removeSupportAllView() //移除全部component支持 .navigationBarEnable(true) //是否可以修改导航栏颜色,默认为true .keyboardEnable(true) //解决软键盘与底部输入框冲突问题,默认为false,还有一个重载方法,可以指定软键盘mode .addTag("tag") //给以上设置的参数打标记 .getTag("tag") //根据tag获得沉浸式参数 .reset() //重置所以沉浸式参数 .init(); //必须调用方可应用以上所配置的参数 ``` 3.在Ability中实现沉浸式 ```java ImmersionBar.with(getAbility()).init(); ``` 4.在Fraction中实现沉浸式 ```java ImmersionBar.with(getFractionAbility()).init(); ``` 5.解决TextField和软键盘的问题 ```java ImmersionBar.with(getAbility()) .keyboardEnable(true) //解决软键盘与底部输入框冲突问题 .init(); ``` 6.判断是否存在导航栏 ```java public static boolean hasNavigationBar(Ability ability) ``` 7.获得导航栏的高度 ```java public static int getNavigationBarHeight(Ability ability) ``` 8.获得导航栏的宽度 ```java public static int getNavigationBarWidth(Ability ability) ``` 9.获得状态栏的高度 ```java public static int getStatusBarHeight(Ability ability) ``` 10.是否是刘海屏 ```java public static boolean hasNotchScreen(Ability ability) ``` 11.获得刘海屏高度 ```java public static boolean getNotchHeight(Ability ability) ``` 12.判断当前设备支不支持状态栏字体设置为黑色 ```java public static boolean isSupportStatusBarDarkFont() ``` 13.判断当前设备支不支持导航栏图标设置为黑色 ```java public static boolean isSupportNavigationIconDark() ``` 14.隐藏状态栏 ```java public static void hideStatusBar(Window window) ``` #### 版本迭代 - v1.0.1 #### 版权和许可信息 - Apache Licence