一. 问题
前段时间看了拉丁吴的Android启动页黑屏及最优解决方案,尝试将预览图片与启动页背景设置为同一张图片,但看效果不太理想,当由预览界面转到气动页面时,会明显的看到图片向上移动了一段距离,效果如下:
二. 原因
打印了一下预览界面的drawable与启动界面的drawable的Rect值,结果如果下:
可以看到两者的高度不同,预览窗口的是1280,启动页的是1134,,猜测可能与上方的状态栏和下方的导航栏有关,再次打印了一下状态栏与导航栏的高度:
1134+50+96=1280,启动图片的高度+状态栏的高度+导航栏的高度=预览界面图片的高度。
三. 解决方法
解决方法就是启动页的view组件网上扩展状态栏的高度,往下扩展导航栏的高度。
代码如下:
public class InitActivity extends CommonActivity {
private ImageView mBgImgv;
@Override
protected void onCreate(Bundle savedInstanceState) {
// getWindow().setBackgroundDrawable(null);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_init);
mBgImgv = (ImageView) findViewById(R.id.defaultBgImgv);
mBgImgv.post(new Runnable() {
@Override
public void run() {
Rect rectangle= new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(rectangle);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(mBgImgv.getLayoutParams());
//向上扩展状态栏的高度,向下扩展导航栏的高度
lp.setMargins(0, 0 - rectangle.top, 0, 0 - getNavigationBarHeight());
mBgImgv.setLayoutParams(lp);
}
});
mBgImgv.postDelayed(new Runnable() {
@Override
public void run() {
Intent intent = new Intent(InitActivity.this,MainActivity.class);
startActivity(intent);
}
},2500);
}
private int getNavigationBarHeight() {
Resources resources = getResources();
int resourceId = resources.getIdentifier("navigation_bar_height","dimen", "android");
int height = resources.getDimensionPixelSize(resourceId);
Log.v("dbw", "Navi height:" + height);
return height;
}
}