Cordova 实现沉浸式(透明)状态栏效果

沉浸式状态栏(Immersive Mode)和透明状态栏(Translucent Bar)。

这两个概念很多地方的解释都不是很清晰,所以导致很多人都各有各的认识。所以这里我也有一个自己的认识,笔者认为沉浸式状态栏也可以说是全屏模式,即隐藏状态栏与导航栏。 而透明状态栏是不隐藏状态栏但是它所呈现的是透明的。因为默认情况下状态栏都是黑底白字。而我们现在要实现的就是透明状态栏下的全屏模式。话不多说,看效果:

1.png
2.png

对比这两张图的状态栏效果可以看出。第一张图效果对界面来说不是很美观,但是第二个效果就非常美观了。下面我们就来实现。

使用cordova实现就需要cordova-plugin-statusbar这个插件,我们需要对此插件进行一些修改即可实现我们想要的效果。

在项目路径->platforms->android->src->org->apache->cordova->statusbar中找到StatusBar.java文件。
然后修改run方法即可:

            public void run() {
                // Clear flag FLAG_FORCE_NOT_FULLSCREEN which is set initially
                // by the Cordova.
                Window window = cordova.getActivity().getWindow();

//添加代码start         
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);      window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
window.setNavigationBarColor(Color.TRANSPARENT);
//添加代码end
                 window.clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

                // Read 'StatusBarBackgroundColor' from config.xml, default is #000000.
                //注释原有设置背景色的方法
             //setStatusBarBackgroundColor(preferences.getString("StatusBarBackgroundColor", "#000000"));
            }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 关于沉浸式状态栏一词的说法从何而来我们无从考证。但这确实是个错误的说法先引用官方的一段话。 Immersive f...
    ifjgm阅读 13,067评论 3 46
  • 目录 如何实现? 集成DEMO 简短的分析 一个额外的小栗子 我想让状态栏变色怎么办? 为什么这么做? 总结 效果...
    jeneser阅读 15,928评论 17 23
  • 最近项目需求中需要对statusBar做透明穿透处理,刚开始没想太多,随着开发进行,发现坑位那绝对是满满的,主要就...
    浪够_阅读 3,868评论 0 1
  • 前言 首先请大家看几张图: 以上的效果,一般我们统称为沉浸式状态栏。其实,这种叫法不是很准确,而且也没有沉浸式状态...
    宇是我阅读 9,520评论 2 28
  • 好吧,从这里开始事情即将变得激烈有趣起来哦! 在过去的四篇文章里,你奠定了基础,学习了清醒梦(梦想回忆和意识)的基...
    JoshuaChou阅读 5,824评论 0 1

友情链接更多精彩内容