Android 页面切换时抖动问题

来源:互联网 发布:2015年8月进出口数据 编辑:程序博客网 时间:2024/05/21 11:14
关于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. }  



2 0