@@ -1,5 +1,7 @@
|
||||
package com.mogo.eagle.core.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.ViewGroup.MarginLayoutParams;
|
||||
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;
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
@@ -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...");
|
||||
@@ -288,9 +288,13 @@ public final class BarUtils {
|
||||
* @param fakeStatusBar The fake status bar view.
|
||||
*/
|
||||
public static void setStatusBarCustom(@NonNull final View fakeStatusBar) {
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return;
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
|
||||
return;
|
||||
}
|
||||
Activity activity = UtilsBridge.getActivityByContext(fakeStatusBar.getContext());
|
||||
if (activity == null) return;
|
||||
if (activity == null) {
|
||||
return;
|
||||
}
|
||||
transparentStatusBar(activity);
|
||||
fakeStatusBar.setVisibility(View.VISIBLE);
|
||||
ViewGroup.LayoutParams layoutParams = fakeStatusBar.getLayoutParams();
|
||||
@@ -333,9 +337,13 @@ public final class BarUtils {
|
||||
@NonNull final View fakeStatusBar,
|
||||
@ColorInt final int color,
|
||||
final boolean isTop) {
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return;
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
|
||||
return;
|
||||
}
|
||||
Activity activity = UtilsBridge.getActivityByContext(fakeStatusBar.getContext());
|
||||
if (activity == null) return;
|
||||
if (activity == null) {
|
||||
return;
|
||||
}
|
||||
transparentStatusBar(activity);
|
||||
drawer.setFitsSystemWindows(false);
|
||||
setStatusBarColor(fakeStatusBar, color);
|
||||
@@ -381,14 +389,18 @@ public final class BarUtils {
|
||||
private static void hideStatusBarView(@NonNull final Window window) {
|
||||
ViewGroup decorView = (ViewGroup) window.getDecorView();
|
||||
View fakeStatusBarView = decorView.findViewWithTag(TAG_STATUS_BAR);
|
||||
if (fakeStatusBarView == null) return;
|
||||
if (fakeStatusBarView == null) {
|
||||
return;
|
||||
}
|
||||
fakeStatusBarView.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
private static void showStatusBarView(@NonNull final Window window) {
|
||||
ViewGroup decorView = (ViewGroup) window.getDecorView();
|
||||
View fakeStatusBarView = decorView.findViewWithTag(TAG_STATUS_BAR);
|
||||
if (fakeStatusBarView == null) return;
|
||||
if (fakeStatusBarView == null) {
|
||||
return;
|
||||
}
|
||||
fakeStatusBarView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
@@ -407,16 +419,18 @@ public final class BarUtils {
|
||||
}
|
||||
|
||||
public static void transparentStatusBar(@NonNull final Window window) {
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) return;
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
|
||||
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
|
||||
| WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
|
||||
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
||||
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
|
||||
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
|
||||
int option = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
|
||||
int vis = window.getDecorView().getSystemUiVisibility();
|
||||
window.getDecorView().setSystemUiVisibility(option | vis);
|
||||
window.setStatusBarColor(Color.TRANSPARENT);
|
||||
window.setNavigationBarColor(Color.TRANSPARENT);
|
||||
} else {
|
||||
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
|
||||
window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,
|
||||
WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user