java - 怎么正确的隐藏navigationbar,并适配不同手机?

 突然丶丶想你 发布于 2022-10-26 05:42

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"了么

    2022-10-27 00:30 回答
  • 为什么不设置一个imageview?

    2022-10-27 00:30 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有