效果图如下,就是状态栏和actionbar保持一致的颜色,非常漂亮

在activity的onCreate 方法里调用该方法就好了。使用时,将R.color.blue换成自己喜欢的颜色

 /**     * 适配沉浸式状态栏,sdk 19 以上才有效     * <br>对全屏状态做了例外处理,全屏状态改变时需要调用此方法     */    @TargetApi(android.os.Build.VERSION_CODES.KITKAT)    public static void immersive(ActionBarActivity activity) {        if (Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.KITKAT)            return;        ColorDrawable bgColor = new ColorDrawable(activity.getResources().getColor(R.color.blue));        activity.getSupportActionBar().setBackgroundDrawable(bgColor);        Window window = activity.getWindow();        int flags = window.getAttributes().flags;        //非全屏        if ((flags | WindowManager.LayoutParams.FLAG_FULLSCREEN) != flags) {            window.setFlags(                    WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,                    WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);            View contentView = window                    .findViewById(Window.ID_ANDROID_CONTENT);            contentView.setBackground(bgColor);            contentView.setPadding(0, getStatusbarHeight(activity), 0, 0);        } else {            //全屏            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);            View contentView = window                    .findViewById(Window.ID_ANDROID_CONTENT);            contentView.setBackground(bgColor);            contentView.setPadding(0, 0, 0, 0);        }    }    public static int getStatusbarHeight(Context context) {        try {            Class<?> c = Class.forName("com.android.internal.R$dimen");            Object obj = c.newInstance();            Field field = c.getField("status_bar_height");            int x = Integer.parseInt(field.get(obj).toString());            int y = context.getResources().getDimensionPixelSize(x);            return y;        } catch (Exception e) {            e.printStackTrace();            return (int) (context.getResources().getDisplayMetrics().density * 20 + 0.5);        }    }

另外,因为statusbar是固定的高度,可以在oncreate的时候,就把高度的值保存下来,使用下面的函数也行

 public int getStatusBarHeight() {        int result = 0;        int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");        if (resourceId > 0) {            result = getResources().getDimensionPixelSize(resourceId);        }        return result;    }

更多相关文章

  1. Android处理Home键方法小结
  2. Wayland中的跨进程过程调用浅析
  3. 高通平台GPIO pinctrl调试心得
  4. View视图绘制流程,View工作原理(二)
  5. Alibaba-AndFix Bug热修复框架原理及源码解析
  6. Android(安卓)java.lang.UnsatisfiedLinkError: dalvik.system.P
  7. Android(安卓)Handler学习之异步与多线程(★推荐)
  8. Android(安卓)Service的使用
  9. Android(安卓)四大组件(Activity、Service、BroadCastReceiver、

随机推荐

  1. Android获取WIFI 的ssid 方法适配Android
  2. 适于android初学者入门的资料集
  3. Android原生人脸识别Camera2+FaceDetecto
  4. 画出Android的大体架构图
  5. Android 官方示例:android-architecture
  6. Android ADT_20新建项目Android Support
  7. Android系统架构及特点
  8. Android Material Design向下兼容至低版
  9. 在EeePC上运行Android!(转)(也是代码下载配
  10. Android利用drawable文件夹自定义控件背