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);
        }
    }

你可能感兴趣的:(Android全屏返回布局抖动问题)