设置当前界面是否是全屏模式

/**     * 修改当前 Activity 的显示模式,hideStatusBarBackground :true 全屏模式,false 着色模式     *     * @param activity     * @param hideStatusBarBackground     */    public static void setStatusBar(Activity activity, boolean hideStatusBarBackground) {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {            Window window = activity.getWindow();            window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);            if (hideStatusBarBackground) {                window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);            } else {                window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);            }            ViewGroup mContentView = (ViewGroup) window.findViewById(Window.ID_ANDROID_CONTENT);            View mChildView = mContentView.getChildAt(0);            if (mChildView != null) {                if (hideStatusBarBackground) {                    mChildView.setPadding(                            mChildView.getPaddingLeft(),                            0,                            mChildView.getPaddingRight(),                            mChildView.getPaddingBottom()                    );                } else {                    int statusHeight = getStatusBarHeight(activity);                    mChildView.setPadding(                            mChildView.getPaddingLeft(),                            statusHeight,                            mChildView.getPaddingRight(),                            mChildView.getPaddingBottom()                    );                }            }        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {            Window window = activity.getWindow();            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);            if (hideStatusBarBackground) {                window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);                window.setStatusBarColor(Color.TRANSPARENT);                window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);            } else {                window.setStatusBarColor(activity.getResources().getColor(R.color.colorPrimary));                window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);                window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);            }        }    }     /**     * 获取手机状态栏高度     */ public static int getStatusBarHeight(Context context) {        int result = 0;        int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");        if (resourceId > 0) {            result = context.getResources().getDimensionPixelSize(resourceId);        }        return result;    }      /**     *设置状态栏颜色     */     public static void setStatusBarColor(Activity activity, int colorId) {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {            Window window = activity.getWindow();            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);            window.setStatusBarColor(activity.getResources().getColor(colorId));        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {            //使用SystemBarTint库使4.4版本状态栏变色,需要先将状态栏设置为透明            transparentBar(activity);            SystemBarTintManager tintManager = new SystemBarTintManager(activity);            tintManager.setStatusBarTintEnabled(true);            tintManager.setStatusBarTintResource(colorId);        }    }     @TargetApi(19)    public static void transparentBar(Activity activity) {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {            Window window = activity.getWindow();            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);            window.setStatusBarColor(Color.TRANSPARENT);            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {            Window window = activity.getWindow();            window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,                    WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);        }    }

设置状态栏文字颜色

 /**     * 设置状态栏文字颜色  true 为黑色  false 为白色(XML跟布局配置  android:fitsSystemWindows="true",否则布局会上移)     */    public static void setStatusBarLightMode(Activity activity, boolean dark) {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {            if (dark) {  //                if (MIUISetStatusBarLightMode(activity, dark)) {                } else if (FlymeSetStatusBarLightMode(activity.getWindow(), dark)) {                } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {                //其他                    activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);                }            } else {                if (MIUISetStatusBarLightMode(activity, dark)) {                } else if (FlymeSetStatusBarLightMode(activity.getWindow(), dark)) {                } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {                    activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);                }            }        }    } /**     * 设置状态栏图标为深色和魅族特定的文字风格     * 可以用来判断是否为Flyme用户     *     * @param window 需要设置的窗口     * @param dark   是否把状态栏文字及图标颜色设置为深色     * @return boolean 成功执行返回true     */    public static boolean FlymeSetStatusBarLightMode(Window window, boolean dark) {        boolean result = false;        if (window != null) {            try {                WindowManager.LayoutParams lp = window.getAttributes();                Field darkFlag = WindowManager.LayoutParams.class                        .getDeclaredField("MEIZU_FLAG_DARK_STATUS_BAR_ICON");                Field meizuFlags = WindowManager.LayoutParams.class                        .getDeclaredField("meizuFlags");                darkFlag.setAccessible(true);                meizuFlags.setAccessible(true);                int bit = darkFlag.getInt(null);                int value = meizuFlags.getInt(lp);                if (dark) {                    value |= bit;                } else {                    value &= ~bit;                }                meizuFlags.setInt(lp, value);                window.setAttributes(lp);                result = true;            } catch (Exception e) {            }        }        return result;    }    /**     * 需要MIUIV6以上     *     * @param activity     * @param dark     是否把状态栏文字及图标颜色设置为深色     * @return boolean 成功执行返回true     */    public static boolean MIUISetStatusBarLightMode(Activity activity, boolean dark) {        boolean result = false;        Window window = activity.getWindow();        if (window != null) {            Class clazz = window.getClass();            try {                int darkModeFlag = 0;                Class layoutParams = Class.forName("android.view.MiuiWindowManager$LayoutParams");                Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE");                darkModeFlag = field.getInt(layoutParams);                Method extraFlagField = clazz.getMethod("setExtraFlags", int.class, int.class);                if (dark) {                    extraFlagField.invoke(window, darkModeFlag, darkModeFlag);//状态栏透明且黑色字体                } else {                    extraFlagField.invoke(window, 0, darkModeFlag);//清除黑色字体                }                result = true;                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {                    //开发版 7.7.13 及以后版本采用了系统API,旧方法无效但不会报错,所以两个方式都要加上                    if (dark) {                        activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);                    } else {                        activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);                    }                }            } catch (Exception e) {            }        }        return result;    }

更多相关文章

  1. Android水平进度条颜色和样式
  2. android中实现背景图片颜色渐变方法
  3. Android常用颜色大全
  4. Android常用布局颜色值大全
  5. android 常用颜色表
  6. android设置toolbar的menu itemTextView颜色 set toolbar menu i
  7. Android ListView拖动时背景颜色会变成黑色 的解决办法

随机推荐

  1. Android中各种消息监听机制
  2. android 圆形的图片里面带字
  3. android service
  4. android滑轮选择控件——whell
  5. Android获取文件的MD5值
  6. 获取android build-tools/platform-tools
  7. 限制Android的EditText输入文字时换行
  8. Android(安卓)O 为应用添加默认权限,进入
  9. android中调用requestFocus()的详细过程
  10. Android(安卓)系统名字、版本、API level