1.先说一下我的需求是,在进入app的splash界面播放一个gif动画来完成欢迎动画的实现。具体实现步骤是将主题设置windowBackground指定一张图片(这张图片即是gif图的第一帧),然后在进入splashactivity后,调用setContentView后,播放gif动画,但是这样实现有一个前提就是,gif图的位置必须和windowBackground设置的图的位置完全重合才行,这样看起来是一个完整的动画。
那么问题来了,经测试,在htc、华为等部分手机出现图片不重合的情况,研究发现是navigationbar的原因导致spalsh界面的布局受到影响。最后通过设置如下代码解决了在nexus5上不重合问题,代码如下:
View decorView = getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE; decorView.setSystemUiVisibility(uiOptions);
上面这段代码的意思是,不让navigationbar影响原来的布局。但是这样会导致在htc、华为等部分手机上出现不重合问题(估计这些手机系统已经排除navigationbar的高度,也就是说不让navigationbar的高度参与布局)。而如果不设置以上代码,又会在nexus5上出现不重合问题。那么我该怎么判断系统是否已经排除了navigationbar高度呢?有人遇到过这个问题吗?
用了android:fitsSystemWindows="true"了么
一周热门 更多>