天天看點

android 布局防抖動,Android全屏傳回布局抖動問題

在api19以後actvityA切到actvityB ,如果B是全屏的,A是非全屏的,這個時候切換回A會有一個狀态欄出現的動畫,随着狀态欄出現動畫我們的布局會出現一個從上往下的抖動。

在ActvityA的setContentView()方法後調用initStatusBar()方可解決問題

public void initStatusBar() {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

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(ContextCompat.getColor(this, R.color.colorPrimaryDark));

// 添加矩形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);

}

}