ImmersionBar README

The project's README from github.com/gyf-dev/ImmersionBar. As one markdown file: README.md.

logo

ImmersionBar -- android 4.4以上沉浸式实现

version author 简书 QQ群

直接看效果图,建议下载demo体验,最下面有各个版本的效果图

使用(gyf替换为geyifeng)

3.1.1以上版本(mavenCentral)

// 基础依赖包,必须要依赖
implementation 'com.geyifeng.immersionbar:immersionbar:3.3.3'
// kotlin扩展(可选)
implementation 'com.geyifeng.immersionbar:immersionbar-ktx:3.3.3'
// fragment快速实现(可选)已废弃
implementation 'com.geyifeng.immersionbar:immersionbar-components:3.3.3'

3.0.0版本(jcenter)

// 基础依赖包,必须要依赖
implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
// kotlin扩展(可选)
implementation 'com.gyf.immersionbar:immersionbar-ktx:3.0.0'
// fragment快速实现(可选)
implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0'

版本说明

点我查看版本说明

下载demo

点我下载immersionBar-3.3.3.apk

关于全面屏与刘海

关于全面屏

在manifest加入如下配置,四选其一,或者都写

① 升级targetSdkVersion为25以上版本,现在基本都是25以上了,所以以下三个没有必要配置了

② 在manifest的Application节点中加入

   android:resizeableActivity="true"

③ 在manifest的Application节点中加入

   android:maxAspectRatio="2.4"

④ 在manifest的Application节点下加入

   <meta-data 
     android:name="android.max_aspect"
     android:value="2.4" />

关于刘海屏

在manifest的Application节点下加入,vivo和oppo没有找到相关配置信息

   <!--适配华为(huawei)刘海屏-->
   <meta-data 
     android:name="android.notch_support" 
     android:value="true"/>
   <!--适配小米(xiaomi)刘海屏-->
   <meta-data
     android:name="notch.config"
     android:value="portrait|landscape" />

Api详解

在Activity中实现沉浸式

在Fragment中实现沉浸式

在Fragment使用ImmersionBar

在Activity使用ImmersionBar

使用Fragment第三方框架Fragmentation实现沉浸式

在Dialog中实现沉浸式,具体实现参考demo

在PopupWindow中实现沉浸式,具体实现参考demo

重点是调用以下方法,但是此方法会导致有导航栏的手机底部布局会被导航栏覆盖,还有底部输入框无法根据软键盘弹出而弹出,具体适配请参考demo。

    popupWindow.setClippingEnabled(false);

状态栏与布局顶部重叠解决方案,六种方案根据不同需求任选其一

解决EditText和软键盘的问题

当白色背景状态栏遇到不能改变状态栏字体为深色的设备时,解决方案

      ImmersionBar.with(this)
                  .statusBarDarkFont(true, 0.2f) //原理:如果当前设备支持状态栏字体变色,会设置状态栏字体为黑色,如果当前设备不支持状态栏字体变色,会使当前状态栏加上透明度,否则不执行透明度
                  .init();

状态栏和导航栏其它方法

混淆规则(proguard-rules.pro)

3.1.1以上版本无需混淆

3.0.0以下版本混淆规制

 -keep class com.gyf.immersionbar.* {*;} 
 -dontwarn com.gyf.immersionbar.**

问题汇总

点我问题汇总

效果图

说明

动态图

特别鸣谢

联系我

感谢支持

Donate

ImmersionBar (gyf-dev/ImmersionBar)

Searching Database…

这是什么?ImmersionBar 是一个 Android 库,用于管理沉浸式(内容延伸到状态栏和导航栏下方)的状态栏和导航栏。只需少量代码,就能设置状态栏文字颜色、修改导航栏图标颜色,并处理屏幕旋转、刘海屏、软键盘等情况。
这是独立的应用,还是我要添加到项目中的库?它是一个库,需要以 Gradle 依赖的形式添加到现有的 Android 应用中,本身并不是独立的应用程序。
我该如何把它添加到项目中?3.1.1 及以上版本从 Maven Central 添加 ImmersionBar 依赖;如果需要 3.0.0 版本,则使用较早的 JCenter 构件。然后在 Activity、Fragment、Dialog、DialogFragment 或 PopupWindow 中用一行代码调用其 API。
使用它需要什么特别的条件吗?只需要一个标准的 Android 项目,目标 API 19(Android 4.4)或更高版本即可;不需要额外的 SDK,也不需要外部服务。
它在所有设备上的表现都一样吗?不一样。有些设备即使在白色背景上,也无法把状态栏文字颜色设为深色,这需要另外的变通方法。另外,PopupWindow 中的某个方法可能导致导航栏与底部布局重叠,或使因软键盘弹出而需要上移的输入框无法上移。
它支持哪些 Android 版本和屏幕类型?它面向 Android 4.4 及更新版本,并专门适配了横竖屏切换、刘海屏以及手势导航检测。
如果我开启了代码压缩(shrink),是否需要 ProGuard 规则?3.1.1 及以上版本不需要额外的 ProGuard 规则;只有 3.1.1 以下的版本才需要添加 proguard-rules.pro 中的条目。
我能用代码检查导航栏的高度或可见性吗?可以。它提供了一些静态辅助方法,如 getNavigationBarHeight()、hasNavigationBar()、isNavigationAtBottom() 和 getBarProperties(),其中 getBarProperties() 可获取状态栏和导航栏状态的完整快照。
怎样避免状态栏遮挡我的布局?README 列出了六种方法,包括设置固定的 dimen 高度、使用 fitsSystemWindows,以及 ImmersionBar 自带的 statusBarView()、titleBar() 和 titleBarMarginTop() 方法。
它能在与 ViewPager2 配合使用的 Fragment 中工作吗?可以。如果 Fragment 的显示由 ViewPager2 通过 BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT 控制,就直接在 onResume() 中调用 ImmersionBar;其他显示和隐藏的方式也在演示项目中有说明。
Creator
gyf-dev
Size
326.6 MB
Stars
11.5K
Age
9y
Commits · 90 Days