Skip to content

Commit

Permalink
update 2.3.3
Browse files Browse the repository at this point in the history
  • Loading branch information
geyifeng committed Feb 27, 2019
1 parent fc0833a commit 1281aee
Show file tree
Hide file tree
Showing 22 changed files with 414 additions and 89 deletions.
14 changes: 8 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
- 2.3.1+版本 (由于之前账户密码忘记,所以只能重新更改依赖路径)
```groovy
implementation 'com.gyf.immersionbar:immersionbar:2.3.3-beta15'
implementation 'com.gyf.immersionbar:immersionbar:2.3.3'
```
- 2.3.0以下版本
```groovy
Expand All @@ -18,13 +18,13 @@

>eclipse
[immersionbar-2.3.3-beta15.aar](https://github.com/gyf-dev/ImmersionBar/blob/master/jar/immersionbar-2.3.3-beta15.aar)
[immersionbar-2.3.3.aar](https://github.com/gyf-dev/ImmersionBar/blob/master/jar/immersionbar-2.3.3.aar)

## 版本说明
### [点我查看版本说明](https://github.com/gyf-dev/ImmersionBar/wiki)

## 下载demo
### [点我下载immersionBar-2.3.3-beta15.apk](https://github.com/gyf-dev/ImmersionBar/blob/master/apk/immersionBar-2.3.3-beta15.apk)
### [点我下载immersionBar-2.3.3.apk](https://github.com/gyf-dev/ImmersionBar/blob/master/apk/immersionBar-2.3.3.apk)

## 关于使用AndroidX支持库
- 如果你的项目中使用了AndroidX支持库,请在你的gradle.properties加入如下配置,如果已经配置了,请忽略
Expand Down Expand Up @@ -88,6 +88,9 @@
.barAlpha(0.3f) //状态栏和导航栏透明度,不写默认0.0f
.statusBarDarkFont(true) //状态栏字体是深色,不写默认为亮色
.navigationBarDarkIcon(true) //导航栏图标是深色,不写默认为亮色
.autoDarkModeEnable(true) //自动状态栏字体和导航栏图标变色,必须指定状态栏颜色和导航栏颜色才可以自动变色哦
.autoStatusBarDarkModeEnable(true,0.2f) //自动状态栏字体变色,必须指定状态栏颜色才可以自动变色哦
.autoNavigationBarDarkModeEnable(true,0.2f) //自动导航栏图标变色,必须指定导航栏颜色才可以自动变色哦
.flymeOSStatusBarFontColor(R.color.btn3) //修改flyme OS状态栏字体颜色
.fullScreen(true) //有导航栏的情况下,activity全屏显示,也就是activity最下面被导航栏覆盖,不写默认非全屏
.hideBar(BarHide.FLAG_HIDE_BAR) //隐藏状态栏或导航栏或两者,不写默认不隐藏
Expand Down Expand Up @@ -395,6 +398,7 @@
## 混淆规则(proguard-rules.pro)
```
-keep class com.gyf.barlibrary.* {*;}
-dontwarn com.gyf.barlibrary.**
```

## 效果图 ##
Expand All @@ -417,6 +421,4 @@
* 感谢[zhangzhen92](https://github.com/zhangzhen92)、 [yutouxiansheng](https://github.com/yutouxiansheng) 、[MrWhhh](https://github.com/MrWhhh)提供测试

## 联系我 ##
- QQ314360549(问题交流)
- WeChat(微信)
<img width="300" src="https://github.com/gyf-dev/Screenshots/blob/master/ImmersionBar/wechat.JPG"/>
- QQ314360549(问题交流)
Binary file removed apk/immersionBar-2.3.3-beta15.apk
Binary file not shown.
Binary file added apk/immersionBar-2.3.3.apk
Binary file not shown.
2 changes: 1 addition & 1 deletion barlibrary/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ publish {
userOrg = 'geyifeng'
groupId = 'com.gyf.immersionbar'
artifactId = 'immersionbar'
publishVersion = '2.3.3-beta15'
publishVersion = '2.3.3'
desc = 'Android bar management'
website = 'https://github.com/gyf-dev/ImmersionBar'
}
31 changes: 25 additions & 6 deletions barlibrary/src/main/java/com/gyf/barlibrary/BarParams.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
* 沉浸式参数信息
*
* @author geyifeng
* @date 2017/5/9
* @date 2017 /5/9
*/
public class BarParams implements Cloneable {
/**
Expand All @@ -29,6 +29,9 @@ public class BarParams implements Cloneable {
@ColorInt
int navigationBarColor = Color.BLACK;

/**
* The Default navigation bar color.
*/
int defaultNavigationBarColor = Color.BLACK;
/**
* 状态栏透明度
Expand Down Expand Up @@ -68,12 +71,29 @@ public class BarParams implements Cloneable {
* The Navigation bar dark icon.
*/
boolean navigationBarDarkIcon = false;
/**
* 是否启用 自动根据StatusBar颜色调整深色模式与亮色模式
* The Auto status bar dark mode enable.
*/
boolean autoStatusBarDarkModeEnable = false;

/**
* 是否启用 自动根据NavigationBar颜色调整深色模式与亮色模式
* The Auto navigation bar dark mode enable.
*/
boolean autoNavigationBarDarkModeEnable = false;

/**
* The Auto status bar dark mode alpha.
*/
@FloatRange(from = 0f, to = 1f)
float autoStatusBarDarkModeAlpha = 0.0f;

/**
* 是否启用 自动根据StatusBar和NavigationBar颜色调整深色模式与亮色模式
* Auto Dark font.
* The Auto navigation bar dark mode alpha.
*/
boolean autoDarkModeEnable = false;
@FloatRange(from = 0f, to = 1f)
float autoNavigationBarDarkModeAlpha = 0.0f;

/**
* 是否可以修改状态栏颜色
Expand Down Expand Up @@ -186,8 +206,7 @@ protected BarParams clone() {
BarParams barParams = null;
try {
barParams = (BarParams) super.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
} catch (CloneNotSupportedException ignored) {
}
return barParams;
}
Expand Down
111 changes: 90 additions & 21 deletions barlibrary/src/main/java/com/gyf/barlibrary/ImmersionBar.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,11 @@ public class ImmersionBar {
private static final String MIUI_STATUS_BAR_DARK = "EXTRA_FLAG_STATUS_BAR_DARK_MODE";
private static final String MIUI_NAVIGATION_BAR_DARK = "EXTRA_FLAG_NAVIGATION_BAR_DARK_MODE";

/**
* 自动改变字体颜色的临界值
*/
private final static int BOUNDARY_COLOR = 0xFFBABABA;

private static final int FLAG_FITS_DEFAULT = 0X00;
private static final int FLAG_FITS_TITLE = 0X01;
private static final int FLAG_FITS_TITLE_MARGIN_TOP = 0X02;
Expand Down Expand Up @@ -981,7 +986,7 @@ public ImmersionBar removeSupportView(View view) {
throw new IllegalArgumentException("View参数不能为空");
}
Map<Integer, Integer> map = mBarParams.viewMap.get(view);
if (map.size() != 0) {
if (map != null && map.size() != 0) {
mBarParams.viewMap.remove(view);
}
return this;
Expand Down Expand Up @@ -1044,15 +1049,79 @@ public ImmersionBar barAlpha(@FloatRange(from = 0f, to = 1f) float barAlpha) {
return this;
}


/**
* 是否启用 自动根据StatusBar和NavigationBar颜色调整深色模式与亮色模式
*
* @param isEnable true启用 默认false
* @return the immersion bar
*/
public ImmersionBar autoDarkModeEnable(boolean isEnable) {
mBarParams.autoDarkModeEnable = isEnable;
return this.autoDarkModeEnable(isEnable, 0f);
}

/**
* 是否启用自动根据StatusBar和NavigationBar颜色调整深色模式与亮色模式
* Auto dark mode enable immersion bar.
*
* @param isEnable the is enable
* @param autoDarkModeAlpha the auto dark mode alpha
* @return the immersion bar
*/
public ImmersionBar autoDarkModeEnable(boolean isEnable, @FloatRange(from = 0f, to = 1f) float autoDarkModeAlpha) {
mBarParams.autoStatusBarDarkModeEnable = isEnable;
mBarParams.autoStatusBarDarkModeAlpha = autoDarkModeAlpha;
mBarParams.autoNavigationBarDarkModeEnable = isEnable;
mBarParams.autoNavigationBarDarkModeAlpha = autoDarkModeAlpha;
return this;
}

/**
* 是否启用自动根据StatusBar颜色调整深色模式与亮色模式
* Auto status bar dark mode enable immersion bar.
*
* @param isEnable the is enable
* @return the immersion bar
*/
public ImmersionBar autoStatusBarDarkModeEnable(boolean isEnable) {
return this.autoStatusBarDarkModeEnable(isEnable, 0f);
}

/**
* 是否启用自动根据StatusBar颜色调整深色模式与亮色模式
* Auto status bar dark mode enable immersion bar.
*
* @param isEnable the is enable
* @param autoDarkModeAlpha the auto dark mode alpha
* @return the immersion bar
*/
public ImmersionBar autoStatusBarDarkModeEnable(boolean isEnable, @FloatRange(from = 0f, to = 1f) float autoDarkModeAlpha) {
mBarParams.autoStatusBarDarkModeEnable = isEnable;
mBarParams.autoStatusBarDarkModeAlpha = autoDarkModeAlpha;
return this;
}

/**
* 是否启用自动根据StatusBar颜色调整深色模式与亮色模式
* Auto navigation bar dark mode enable immersion bar.
*
* @param isEnable the is enable
* @return the immersion bar
*/
public ImmersionBar autoNavigationBarDarkModeEnable(boolean isEnable) {
return this.autoNavigationBarDarkModeEnable(isEnable, 0f);
}

/**
* 是否启用自动根据NavigationBar颜色调整深色模式与亮色模式
* Auto navigation bar dark mode enable immersion bar.
*
* @param isEnable the is enable
* @param autoDarkModeAlpha the auto dark mode alpha
* @return the immersion bar
*/
public ImmersionBar autoNavigationBarDarkModeEnable(boolean isEnable, @FloatRange(from = 0f, to = 1f) float autoDarkModeAlpha) {
mBarParams.autoNavigationBarDarkModeEnable = isEnable;
mBarParams.autoNavigationBarDarkModeAlpha = autoDarkModeAlpha;
return this;
}

Expand All @@ -1076,13 +1145,11 @@ public ImmersionBar statusBarDarkFont(boolean isDarkFont) {
*/
public ImmersionBar statusBarDarkFont(boolean isDarkFont, @FloatRange(from = 0f, to = 1f) float statusAlpha) {
mBarParams.statusBarDarkFont = isDarkFont;
if (!isDarkFont) {
mBarParams.flymeOSStatusBarFontColor = 0;
}
if (isSupportStatusBarDarkFont()) {
mBarParams.statusBarAlpha = 0;
} else {
if (isDarkFont && !isSupportStatusBarDarkFont()) {
mBarParams.statusBarAlpha = statusAlpha;
} else {
mBarParams.flymeOSStatusBarFontColor = 0;
mBarParams.statusBarAlpha = 0f;
}
return this;
}
Expand All @@ -1108,10 +1175,10 @@ public ImmersionBar navigationBarDarkIcon(boolean isDarkIcon) {
*/
public ImmersionBar navigationBarDarkIcon(boolean isDarkIcon, @FloatRange(from = 0f, to = 1f) float navigationAlpha) {
mBarParams.navigationBarDarkIcon = isDarkIcon;
if (isSupportNavigationIconDark()) {
mBarParams.navigationBarAlpha = 0;
} else {
if (isDarkIcon && !isSupportNavigationIconDark()) {
mBarParams.navigationBarAlpha = navigationAlpha;
} else {
mBarParams.navigationBarAlpha = 0f;
}
return this;
}
Expand Down Expand Up @@ -1160,7 +1227,7 @@ public ImmersionBar flymeOSStatusBarFontColorInt(@ColorInt int flymeOSStatusBarF
*/
public ImmersionBar hideBar(BarHide barHide) {
mBarParams.barHide = barHide;
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT || OSUtils.isEMUI3_1()) {
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.KITKAT || OSUtils.isEMUI3_x()) {
if ((mBarParams.barHide == BarHide.FLAG_HIDE_NAVIGATION_BAR) ||
(mBarParams.barHide == BarHide.FLAG_HIDE_BAR)) {
mBarParams.hideNavigationBar = true;
Expand Down Expand Up @@ -1632,7 +1699,6 @@ public void destroy() {
*/
private void updateBarParams() {
adjustDarkModeParams();

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//是否可以修改emui3系列手机导航栏
if (OSUtils.isEMUI3_x() && mBarParams.navigationBarWithKitkatEnable) {
Expand All @@ -1657,7 +1723,7 @@ private void setBar() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//防止系统栏隐藏时内容区域大小发生变化
int uiFlags = View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && !OSUtils.isEMUI3_1()) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && !OSUtils.isEMUI3_x()) {
//适配刘海屏
fitsNotchScreen();
//初始化5.0以上,包含5.0
Expand Down Expand Up @@ -1760,7 +1826,7 @@ private void initBarBelowLOLLIPOP() {
//创建一个假的状态栏
setupStatusBarView();
//判断是否存在导航栏,是否禁止设置导航栏
if (mBarConfig.hasNavigationBar() || OSUtils.isEMUI3_1() || OSUtils.isEMUI3_0()) {
if (mBarConfig.hasNavigationBar() || OSUtils.isEMUI3_x()) {
if (mBarParams.navigationBarEnable && mBarParams.navigationBarWithKitkatEnable) {
//透明导航栏,设置这个,如果有导航栏,底部布局会被导航栏遮住
mWindow.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
Expand Down Expand Up @@ -1836,10 +1902,13 @@ private void setupNavBarView() {
* 调整深色亮色模式参数
*/
private void adjustDarkModeParams() {
if (mBarParams.autoDarkModeEnable) {
int boundaryColor = 0xFFBABABA;
statusBarDarkFont(mBarParams.statusBarColor != Color.TRANSPARENT && mBarParams.statusBarColor > boundaryColor);
navigationBarDarkIcon(mBarParams.navigationBarColor != Color.TRANSPARENT && mBarParams.navigationBarColor > boundaryColor);
if (mBarParams.autoStatusBarDarkModeEnable) {
boolean statusBarDarkFont = mBarParams.statusBarColor != Color.TRANSPARENT && mBarParams.statusBarColor > BOUNDARY_COLOR;
statusBarDarkFont(statusBarDarkFont, mBarParams.autoStatusBarDarkModeAlpha);
}
if (mBarParams.autoNavigationBarDarkModeEnable) {
boolean navigationBarDarkIcon = mBarParams.navigationBarColor != Color.TRANSPARENT && mBarParams.navigationBarColor > BOUNDARY_COLOR;
navigationBarDarkIcon(navigationBarDarkIcon, mBarParams.autoNavigationBarDarkModeAlpha);
}
}

Expand Down Expand Up @@ -1879,7 +1948,7 @@ private int hideBar(int uiFlags) {
* 修正界面显示
*/
private void fitsWindows() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && !OSUtils.isEMUI3_1()) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && !OSUtils.isEMUI3_x()) {
//android 5.0以上解决状态栏和布局重叠问题
fitsWindowsAboveLOLLIPOP();
} else {
Expand Down
6 changes: 5 additions & 1 deletion barlibrary/src/main/java/com/gyf/barlibrary/NotchUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,10 @@ private static boolean hasNotchAtVIVO(Context context) {
* @return the boolean
*/
private static boolean hasNotchAtOPPO(Context context) {
return context.getPackageManager().hasSystemFeature(NOTCH_OPPO);
try {
return context.getPackageManager().hasSystemFeature(NOTCH_OPPO);
} catch (Exception ignored) {
return false;
}
}
}
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ buildscript {
}
dependencies {

classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'com.android.tools.build:gradle:3.3.1'
classpath 'com.novoda:bintray-release:0.9'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
Expand Down
4 changes: 2 additions & 2 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Tue Dec 25 16:56:25 CST 2018
#Wed Feb 27 18:42:18 CST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
Binary file added jar/immersionbar-2.3.3.aar
Binary file not shown.
5 changes: 5 additions & 0 deletions sample/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,11 @@
android:name=".activity.TabLayoutActivity"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboardHidden"
android:theme="@style/AppTheme.Transparent" />
<activity
android:name=".activity.TabLayout2Activity"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboardHidden"
android:theme="@style/AppTheme.Transparent"
android:windowSoftInputMode="stateAlwaysHidden" />
<activity
android:name=".activity.FlymeActivity"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboardHidden" />
Expand Down
Loading

0 comments on commit 1281aee

Please sign in to comment.