Android UIAndroid知识

android案例---透明状态栏

2018-07-05  本文已影响91人  return_toLife

想要实现的效果:

微信图片_20171107222158.png
  1. 设置透明状态栏
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS)
        }

设置之后虽然状态栏隐藏了,但是状态栏的高度被填充了(少了状态栏的高度),如下:


11.jpg
  1. 解决步骤一,使用fitssystemwindows预留系统空间,也可以在xml的根布局里设置
 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            //透明状态栏
            activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            ViewGroup rootView = (ViewGroup) ((ViewGroup) activity.getWindow().findViewById(android.R.id.content)).getChildAt(0);
            //预留系统空间
            rootView.setFitsSystemWindows(true);
            //绘制区域在padding里面
            rootView.setClipToPadding(true);
        }

设置预留系统空间之后,用的是小米5s手机,状态栏变成白色,效果如下:


222.png
  1. 继续解决问题,加入一个自定义系统状态栏,获取系统状态栏高度,设置其背景颜色和自定义bar背景一致
 /**
     * 为activity添加状态栏颜色
     *
     * @param activity
     * @param color
     */
    public static void addStatusViewWithColor(Activity activity, int color) {
        //获取contentview布局
        ViewGroup contentView = (ViewGroup) activity.findViewById(android.R.id.content);
        //新建一个new
        View statusBarView = new View(activity);
      //设置宽高
        ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                getStatusBarHeight(activity));
        statusBarView.setBackgroundResource(color);
        contentView.addView(statusBarView, lp);
    }

    /**
     * 获取状态栏高度
     *
     * @param activity
     * @return
     */
    public static int getStatusBarHeight(Activity activity) {
        int result = 0;
        //获取状态栏高度的资源id
        int resourceId = activity.getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            result = activity.getResources().getDimensionPixelSize(resourceId);
        }
        return result;
    }

更多透明状态栏内容参考

http://www.jianshu.com/p/aca4fd6743b1

上一篇下一篇

猜你喜欢

热点阅读