From da8b04946981398dfb217825946af55cba3b3444 Mon Sep 17 00:00:00 2001 From: taochen <935612713@qq.com> Date: Mon, 18 Jul 2022 16:12:33 +0800 Subject: [PATCH] =?UTF-8?q?[M]=20BarUtils=E6=B7=BB=E5=8A=A0transparentNavB?= =?UTF-8?q?ar=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pkg/feature/bar/nav/BarNavActivity.kt | 42 +++++++++++++------ .../com/blankj/utilcode/util/BarUtils.java | 32 +++++++++++--- 2 files changed, 57 insertions(+), 17 deletions(-) diff --git a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/nav/BarNavActivity.kt b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/nav/BarNavActivity.kt index 1b3032974f..48a738ecd7 100644 --- a/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/nav/BarNavActivity.kt +++ b/feature/utilcode/pkg/src/main/java/com/blankj/utilcode/pkg/feature/bar/nav/BarNavActivity.kt @@ -12,7 +12,6 @@ import com.blankj.utilcode.pkg.R import com.blankj.utilcode.util.BarUtils import com.blankj.utilcode.util.CollectionUtils import com.blankj.utilcode.util.ColorUtils -import com.blankj.utilcode.util.Utils /** * ``` @@ -41,24 +40,43 @@ class BarNavActivity : CommonActivity() { add(CommonItemTitle("isSupportNavBar", BarUtils.isSupportNavBar().toString())) if (BarUtils.isSupportNavBar()) { add(CommonItemSwitch( - R.string.bar_nav_visibility, - { BarUtils.isNavBarVisible(this@BarNavActivity) }, - { BarUtils.setNavBarVisibility(this@BarNavActivity, it) } + R.string.bar_nav_visibility, + { BarUtils.isNavBarVisible(this@BarNavActivity) }, + { BarUtils.setNavBarVisibility(this@BarNavActivity, it) } )) add(CommonItemSwitch( - R.string.bar_nav_light_mode, - { BarUtils.isNavBarLightMode(this@BarNavActivity) }, - { BarUtils.setNavBarLightMode(this@BarNavActivity, it) } + R.string.bar_nav_light_mode, + { BarUtils.isNavBarLightMode(this@BarNavActivity) }, + { BarUtils.setNavBarLightMode(this@BarNavActivity, it) } )) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - add(CommonItemClick("getNavBarColor: ${ColorUtils.int2ArgbString(BarUtils.getNavBarColor(this@BarNavActivity))}").setOnItemClickListener() { _, item, _ -> - BarUtils.setNavBarColor(this@BarNavActivity, ColorUtils.getRandomColor()) - itemsView.updateItems(bindItems()) - item.title = "getNavBarColor: ${ColorUtils.int2ArgbString(BarUtils.getNavBarColor(this@BarNavActivity))}" - }) + add( + CommonItemClick( + "getNavBarColor: ${ + ColorUtils.int2ArgbString( + BarUtils.getNavBarColor( + this@BarNavActivity + ) + ) + }" + ).setOnItemClickListener() { _, item, _ -> + BarUtils.setNavBarColor( + this@BarNavActivity, + ColorUtils.getRandomColor() + ) + itemsView.updateItems(bindItems()) + item.title = "getNavBarColor: ${ + ColorUtils.int2ArgbString( + BarUtils.getNavBarColor(this@BarNavActivity) + ) + }" + }) } + add(CommonItemClick("transparentNavBar").setOnItemClickListener() { _, item, _ -> + BarUtils.transparentNavBar(this@BarNavActivity) + }) } } } diff --git a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java index af9dbc4fcd..ece4f7faba 100644 --- a/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java +++ b/lib/utilcode/src/main/java/com/blankj/utilcode/util/BarUtils.java @@ -1,5 +1,7 @@ package com.blankj.utilcode.util; +import static android.Manifest.permission.EXPAND_STATUS_BAR; + import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; @@ -19,15 +21,13 @@ import android.view.Window; import android.view.WindowManager; -import java.lang.reflect.Method; - import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import androidx.annotation.RequiresPermission; import androidx.drawerlayout.widget.DrawerLayout; -import static android.Manifest.permission.EXPAND_STATUS_BAR; +import java.lang.reflect.Method; /** *
@@ -44,8 +44,8 @@ public final class BarUtils { /////////////////////////////////////////////////////////////////////////// private static final String TAG_STATUS_BAR = "TAG_STATUS_BAR"; - private static final String TAG_OFFSET = "TAG_OFFSET"; - private static final int KEY_OFFSET = -123; + private static final String TAG_OFFSET = "TAG_OFFSET"; + private static final int KEY_OFFSET = -123; private BarUtils() { throw new UnsupportedOperationException("u can't instantiate me..."); @@ -715,4 +715,26 @@ public static boolean isNavBarLightMode(@NonNull final Window window) { } return false; } + + public static void transparentNavBar(@NonNull final Activity activity) { + transparentNavBar(activity.getWindow()); + } + + public static void transparentNavBar(@NonNull final Window window) { + if (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) return; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + window.setNavigationBarContrastEnforced(false); + } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + window.setNavigationBarColor(Color.TRANSPARENT); + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + if ((window.getAttributes().flags & WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION) == 0) { + window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); + } + } + View decorView = window.getDecorView(); + int vis = decorView.getSystemUiVisibility(); + int option = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE; + decorView.setSystemUiVisibility(vis | option); + } }