Skip to content

Commit 0b572df

Browse files
authored
Merge pull request Blankj#1669 from YoungBill/master
BarUtils添加transparentNavBar实现
2 parents ac872f8 + da8b049 commit 0b572df

File tree

2 files changed

+57
-17
lines changed
  • feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/nav
  • lib/utilcode/src/main/java/com/blankj/utilcode/util

2 files changed

+57
-17
lines changed

feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/nav/BarNavActivity.kt

Lines changed: 30 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import com.blankj.utilcode.pkg.R
1212
import com.blankj.utilcode.util.BarUtils
1313
import com.blankj.utilcode.util.CollectionUtils
1414
import com.blankj.utilcode.util.ColorUtils
15-
import com.blankj.utilcode.util.Utils
1615

1716
/**
1817
* ```
@@ -41,24 +40,43 @@ class BarNavActivity : CommonActivity() {
4140
add(CommonItemTitle("isSupportNavBar", BarUtils.isSupportNavBar().toString()))
4241
if (BarUtils.isSupportNavBar()) {
4342
add(CommonItemSwitch(
44-
R.string.bar_nav_visibility,
45-
{ BarUtils.isNavBarVisible(this@BarNavActivity) },
46-
{ BarUtils.setNavBarVisibility(this@BarNavActivity, it) }
43+
R.string.bar_nav_visibility,
44+
{ BarUtils.isNavBarVisible(this@BarNavActivity) },
45+
{ BarUtils.setNavBarVisibility(this@BarNavActivity, it) }
4746
))
4847

4948
add(CommonItemSwitch(
50-
R.string.bar_nav_light_mode,
51-
{ BarUtils.isNavBarLightMode(this@BarNavActivity) },
52-
{ BarUtils.setNavBarLightMode(this@BarNavActivity, it) }
49+
R.string.bar_nav_light_mode,
50+
{ BarUtils.isNavBarLightMode(this@BarNavActivity) },
51+
{ BarUtils.setNavBarLightMode(this@BarNavActivity, it) }
5352
))
5453

5554
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
56-
add(CommonItemClick("getNavBarColor: ${ColorUtils.int2ArgbString(BarUtils.getNavBarColor(this@BarNavActivity))}").setOnItemClickListener() { _, item, _ ->
57-
BarUtils.setNavBarColor(this@BarNavActivity, ColorUtils.getRandomColor())
58-
itemsView.updateItems(bindItems())
59-
item.title = "getNavBarColor: ${ColorUtils.int2ArgbString(BarUtils.getNavBarColor(this@BarNavActivity))}"
60-
})
55+
add(
56+
CommonItemClick(
57+
"getNavBarColor: ${
58+
ColorUtils.int2ArgbString(
59+
BarUtils.getNavBarColor(
60+
this@BarNavActivity
61+
)
62+
)
63+
}"
64+
).setOnItemClickListener() { _, item, _ ->
65+
BarUtils.setNavBarColor(
66+
this@BarNavActivity,
67+
ColorUtils.getRandomColor()
68+
)
69+
itemsView.updateItems(bindItems())
70+
item.title = "getNavBarColor: ${
71+
ColorUtils.int2ArgbString(
72+
BarUtils.getNavBarColor(this@BarNavActivity)
73+
)
74+
}"
75+
})
6176
}
77+
add(CommonItemClick("transparentNavBar").setOnItemClickListener() { _, item, _ ->
78+
BarUtils.transparentNavBar(this@BarNavActivity)
79+
})
6280
}
6381
}
6482
}

lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.blankj.utilcode.util;
22

3+
import static android.Manifest.permission.EXPAND_STATUS_BAR;
4+
35
import android.annotation.SuppressLint;
46
import android.app.Activity;
57
import android.content.Context;
@@ -19,15 +21,13 @@
1921
import android.view.Window;
2022
import android.view.WindowManager;
2123

22-
import java.lang.reflect.Method;
23-
2424
import androidx.annotation.ColorInt;
2525
import androidx.annotation.NonNull;
2626
import androidx.annotation.RequiresApi;
2727
import androidx.annotation.RequiresPermission;
2828
import androidx.drawerlayout.widget.DrawerLayout;
2929

30-
import static android.Manifest.permission.EXPAND_STATUS_BAR;
30+
import java.lang.reflect.Method;
3131

3232
/**
3333
* <pre>
@@ -44,8 +44,8 @@ public final class BarUtils {
4444
///////////////////////////////////////////////////////////////////////////
4545

4646
private static final String TAG_STATUS_BAR = "TAG_STATUS_BAR";
47-
private static final String TAG_OFFSET = "TAG_OFFSET";
48-
private static final int KEY_OFFSET = -123;
47+
private static final String TAG_OFFSET = "TAG_OFFSET";
48+
private static final int KEY_OFFSET = -123;
4949

5050
private BarUtils() {
5151
throw new UnsupportedOperationException("u can't instantiate me...");
@@ -715,4 +715,26 @@ public static boolean isNavBarLightMode(@NonNull final Window window) {
715715
}
716716
return false;
717717
}
718+
719+
public static void transparentNavBar(@NonNull final Activity activity) {
720+
transparentNavBar(activity.getWindow());
721+
}
722+
723+
public static void transparentNavBar(@NonNull final Window window) {
724+
if (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) return;
725+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
726+
window.setNavigationBarContrastEnforced(false);
727+
}
728+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
729+
window.setNavigationBarColor(Color.TRANSPARENT);
730+
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
731+
if ((window.getAttributes().flags & WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION) == 0) {
732+
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
733+
}
734+
}
735+
View decorView = window.getDecorView();
736+
int vis = decorView.getSystemUiVisibility();
737+
int option = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
738+
decorView.setSystemUiVisibility(vis | option);
739+
}
718740
}

0 commit comments

Comments
 (0)