1. 程式人生 > >筆記:狀態列佔位,以及隱藏5.0+半透明背景,加在非全屏,oncreate中,全屏切非全屏不抖動。

筆記:狀態列佔位,以及隱藏5.0+半透明背景,加在非全屏,oncreate中,全屏切非全屏不抖動。

public void initStatusBar() {
    StatusBarUtil.setLightMode(this);
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    }
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        Window window = getWindow();
        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_STABLE);
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.setStatusBarColor(Color.TRANSPARENT);
    }

        int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
        // 獲取狀態列高度
        int statusBarHeight = getResources().getDimensionPixelSize(resourceId);
        View rectView = new View(this);
        // 繪製一個和狀態列一樣高的矩形,並新增到檢視中
        LinearLayout.LayoutParams params
                = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, statusBarHeight);
        rectView.setLayoutParams(params);
        //設定狀態列顏色(該顏色根據你的App主題自行更改)
        rectView.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
        // 新增矩形View到佈局中
        ViewGroup decorView = (ViewGroup) getWindow().getDecorView();
        decorView.addView(rectView);
        ViewGroup rootView = (ViewGroup) ((ViewGroup) this.findViewById(android.R.id.content)).getChildAt(0);
        rootView.setFitsSystemWindows(true);
        rootView.setClipToPadding(true);
    }