package com.bwie.zhangjunjingdong.util; import android.app.Activity; import android.graphics.Color; import android.os.Build; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.FrameLayout; public class ChenJinUtil { public static void reset(Activity activity) { setStatusBarColor(activity, Color.BLACK); } public static void setStatusBarColor(Activity activity, int color) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { activity.getWindow().setStatusBarColor(color); } else { setKitKatStatusBarColor(activity, color); } if (color == Color.TRANSPARENT) { removeMarginTop(activity); } else { addMarginTop(activity); } } } private static final String TAG_FAKE_STATUS_BAR_VIEW = "statusBarView"; private static final String TAG_MARGIN_ADDED = "marginAdded"; private static void addMarginTop(Activity activity) { Window window = activity.getWindow(); ViewGroup contentView = (ViewGroup) window.findViewById(Window.ID_ANDROID_CONTENT); View child = contentView.getChildAt(0); if (!TAG_MARGIN_ADDED.equals(child.getTag())) { FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) child.getLayoutParams(); params.topMargin += getStatusBarHeight(activity); child.setLayoutParams(params); child.setTag(TAG_MARGIN_ADDED); } } private static void removeMarginTop(Activity activity) { Window window = activity.getWindow(); ViewGroup contentView = (ViewGroup) window.findViewById(Window.ID_ANDROID_CONTENT); View child = contentView.getChildAt(0); if (TAG_MARGIN_ADDED.equals(child.getTag())) { FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) child.getLayoutParams(); params.topMargin -= getStatusBarHeight(activity); child.setLayoutParams(params); child.setTag(null); } } private static void setKitKatStatusBarColor(Activity activity, int statusBarColor) { Window window = activity.getWindow(); ViewGroup decorView = (ViewGroup) window.getDecorView(); View fakeView = decorView.findViewWithTag(TAG_FAKE_STATUS_BAR_VIEW); if (fakeView != null) { decorView.removeView(fakeView); } View statusBarView = new View(activity); FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, getStatusBarHeight(activity)); params.gravity = Gravity.TOP; statusBarView.setLayoutParams(params); statusBarView.setBackgroundColor(statusBarColor); statusBarView.setTag(TAG_FAKE_STATUS_BAR_VIEW); decorView.addView(statusBarView); } public static int getStatusBarHeight(Activity activity) { int result = 0; int resourceId = activity.getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = activity.getResources().getDimensionPixelSize(resourceId); } return result; } public static void startChenJin(Activity activity) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = activity.getWindow(); View decorView = window.getDecorView(); int option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE; window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); decorView.setSystemUiVisibility(option); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); } else { Window window = activity.getWindow(); WindowManager.LayoutParams attributes = window.getAttributes(); int flagTranslucentStatus = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; attributes.flags |= flagTranslucentStatus; window.setAttributes(attributes); } } } }