关于Android Activity(A)跳转到另一个Activity(B)的时候出现了一点问题;
A页面是全屏,B页面是非全屏(顶部有系统状态栏),当从A跳到B的时候,B的页面的标题栏(自定义)有一半被状态栏给挡住了,然后B页面再向下恢复正常(这个过程持续0.5秒)。给人一种很明显的抖动感觉。体验很差。
解决方案:
在B页面setContentView方法后调用如下函数
- /**
- * 状态栏处理:解决全屏切换非全屏页面被压缩问题
- */
- public void initStatusBar(int barColor) {
- 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);
- //设置状态栏颜色
- rectView.setBackgroundColor(getResources().getColor(barColor));
- // 添加矩形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);
- }
- }