筆記:狀態列佔位,以及隱藏5.0+半透明背景,加在非全屏,oncreate中,全屏切非全屏不抖動。
阿新 • • 發佈:2018-12-11
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); }