怎么正确的隐藏navigationbar,并适配不同手机? 财富值100

2016-10-12 08:29发布

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高度呢?有人遇到过这个问题吗?

2条回答

用了android:fitsSystemWindows="true"了么

一周热门 更多>