Android 页面切换时抖动问题

关于Android Activity(A)跳转到另一个Activity(B)的时候出现了一点问题;

A页面是全屏,B页面是非全屏(顶部有系统状态栏),当从A跳到B的时候,B的页面的标题栏(自定义)有一半被状态栏给挡住了,然后B页面再向下恢复正常(这个过程持续0.5秒)。给人一种很明显的抖动感觉。体验很差。


解决方案:

在B页面setContentView方法后调用如下函数


  1. /** 
  2.  * 状态栏处理:解决全屏切换非全屏页面被压缩问题 
  3.  */  
  4. public void initStatusBar(int barColor) {  
  5.     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {  
  6.         getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);  
  7.         int resourceId = getResources().getIdentifier("status_bar_height""dimen""android");  
  8.         // 获取状态栏高度  
  9.         int statusBarHeight = getResources().getDimensionPixelSize(resourceId);  
  10.         View rectView = new View(this);  
  11.         // 绘制一个和状态栏一样高的矩形,并添加到视图中  
  12.         LinearLayout.LayoutParams params  
  13.                 = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, statusBarHeight);  
  14.         rectView.setLayoutParams(params);  
  15.         //设置状态栏颜色  
  16.         rectView.setBackgroundColor(getResources().getColor(barColor));  
  17.         // 添加矩形View到布局中  
  18.         ViewGroup decorView = (ViewGroup) getWindow().getDecorView();  
  19.         decorView.addView(rectView);  
  20.         ViewGroup rootView = (ViewGroup) ((ViewGroup) this.findViewById(android.R.id.content)).getChildAt(0);  
  21.         rootView.setFitsSystemWindows(true);  
  22.         rootView.setClipToPadding(true);  
  23.     }  
  24. }  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值