Android沉浸式效果的实现—Sofia的使用_sofia.with(this).invasionstatusbar().statusbardark-程序员宅基地

技术标签: # Android:沉浸式  android  Android沉浸式  

Android沉浸式效果的实现,状态栏和导航栏均支持设置颜色、渐变色、图片、透明度、内容入侵和状态栏深色字体;兼容竖屏、横屏,当屏幕旋转时会自动适配。

现在我们的项目中经常需要适配StatusBarNavigationBar,我们需要写很多的代码来进行适配,已完成所需功能。现在来介绍一个第三方Sofia来进行适配,大大的简化了我们代码的编写。下面来看具体使用。

Sofia的GitHub地址:https://github.com/yanzhenjie/Sofia

首先,Sofia的引入,添加依赖

 implementation 'com.yanzhenjie:sofia:1.0.5'

其次,提供的方法列表如下:

// 状态栏深色字体。
Bar statusBarDarkFont();

// 状态栏浅色字体。
Bar statusBarLightFont();

// 状态栏背景色。
Bar statusBarBackground(int statusBarColor);

// 状态栏背景 Drawable。
Bar statusBarBackground(Drawable drawable);

// 状态栏背景透明度。
Bar statusBarBackgroundAlpha(int alpha);

// 导航栏背景色。
Bar navigationBarBackground(int navigationBarColor);

// 导航栏背景 Drawable。
Bar navigationBarBackground(Drawable drawable);

// 导航栏背景透明度。
Bar navigationBarBackgroundAlpha(int alpha);

// 内容入侵状态栏。
Bar invasionStatusBar();

// 内容入侵导航栏。
Bar invasionNavigationBar();

// 让某一个 View 考虑状态栏的高度,显示在适当的位置,接受 ViewId。
Bar fitsStatusBarView(int viewId);

// 让某一个 View 考虑状态栏的高度,显示在适当的位置,接受 View。
Bar fitsStatusBarView(View view);

// 让某一个 View 考虑导航栏的高度,显示在适当的位置,接受 ViewId。
Bar fitsNavigationBarView(View view);

// 让某一个 View 考虑导航栏的高度,显示在适当的位置,接受 View。
Bar fitsNavigationBarView(View view);

注意:Sofia.with(Activity)后返回一个Bar接口实例,这里的方法结合具体的场景调用一个或者几个方法,也可以一个都不调用

最后,一些场景的方法使用

1、如图
在这里插入图片描述
代码为:

Sofia.with(this)
                .statusBarLightFont()//状态栏浅色字体
                .invasionStatusBar()//内容入侵状态栏
                .navigationBarBackground(ContextCompat.getColor(this, R.color.toast_bg))//导航栏背景色
                .statusBarBackground(Color.TRANSPARENT);//状态栏背景色

2、如图,改变状态栏和导航栏背景
在这里插入图片描述
在这里插入图片描述
代码为:

Sofia.with(this)
                .statusBarBackground(ContextCompat.getDrawable(this, R.drawable.banner))//设置状态栏背景Drawable
                .navigationBarBackground(ContextCompat.getDrawable(this, R.drawable.icon_01));//设置导航栏背景Drawable

参考:http://p.codekk.com/detail/Android/yanzhenjie/Sofia

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42814000/article/details/106546235

智能推荐

光线跟踪smallpt详解 (二)_smallpt拓展-程序员宅基地

文章浏览阅读3.6k次,点赞3次,收藏5次。本文主要是为了记录我学习smallpt的过程。第一部分是关于整个程序的大致分解。第二部分主要说一下我对main函数中cx和cy的理解。第三部分主要说明光线跟踪的每一行代码所用到的数学知识。1. 透视投影的原理 如果是小孔成像的话,我们应该是投影在z=-d的平面上,但是这样做涉及到负值操作,还使图像反了。如果我们将投影平面移到z = d,这样做就可以避免负值问题。(但是有个问题就是,物体在摄像机和_smallpt拓展

PTA 程序设计 判断题-期末复习_当变量的存储类型定义缺省时,系统默认为变量的存储类型为auto类型,分配在静态区。-程序员宅基地

文章浏览阅读3.1w次,点赞26次,收藏215次。高级语言程序设计(C)判断题-期末总复习函数题1-1对于已正确定义的二维数组a, *(a[i]+j)与a[i][j]的含义相同。 (2分)T F作者: 黄隆华单位: 怀化学院答案:对于a【i】是第i行的地址,故,j代表往后位移j位,再由指针指向该地址,与a【i】【j】一致,T。1-2实参向形参进行数值传递时,数值传递的方向是单向的,即形参变量值的改变不影响实..._当变量的存储类型定义缺省时,系统默认为变量的存储类型为auto类型,分配在静态区。

abb变频器580系列改中文_ABB变频器ACS580系列-程序员宅基地

文章浏览阅读1.9k次。ACS580系列功率范围 :0.75-500kWACS580传动是全兼容ABB标准传动,它将复杂的控制流程变得简单有效。全兼容的概念很简单:一个更符合您的应用、适合您的客户、业务和环境目标的传动单元,会使您更快的开始享受它所带来的益处,在选择传动时,因为传动的许多内置功能简化了选择过程,为您节省了时间,范围广泛的可选件更易于传动的功能扩展,这些简单的特性同样也延续到了传动的安装和调试中,先进的用户..._acs580

Apache DbUtils工具类初学_commons-dbutils springboot-程序员宅基地

文章浏览阅读361次。下载jar包:(Linux下载1,Windows下载2)http://commons.apache.org/proper/commons-dbutils/download_dbutils.cgiApache DbUtils跟我们学jdbc时自己写的DBUtil很相似,只不过功能更加强大,我们不需要自己写工具类了,使用Apache DbUtils可以大量节省时间精力。不难,只需要知道有哪些主要..._commons-dbutils springboot

MIDI音乐制作概论,常用插件与流行音乐模板_低频搁架 高频搁架-程序员宅基地

文章浏览阅读795次。MIDI音乐制作概论** MIDI音乐在制作过程中需要用到相当多的插件,从最基本的压缩EQ到稍微高端一些的粒子效果glitch等。本笔记主要介绍一下常用的几种效果器。****1.1混音的评价标准:能制作出一般听众在现场录音时不能听到之层次分明的完美效果。也就是说 能够让每一种乐器(包括人声)在最终得到的乐曲中都能听清楚 听得明白 (这就涉及到了对于有不同特色波段乐器的发扬光大或者抑制)所以混音需要相应的工具:1.2均衡器(EQ):均衡器可以提升或者降低不同的声音频率,使各个乐器声部的声音平衡_低频搁架 高频搁架

Android 实现带指示器的自动轮播式ViewPager_android 水平滑动带指示器-程序员宅基地

文章浏览阅读8.6k次,点赞7次,收藏24次。前言最近在做项目的时候,有个需求就是实现自动轮播式的ViewPager,最直观的例子就是知乎日报顶部的ViewPager,它内部有着好几个子view,每个一段时间便自动滑动到下一个item view,而底部的指示器也随之跟着改变。抱着学习和分享的目的,笔者把轮播式ViewPager写成了一个独立的控件,以方便以后的使用。_android 水平滑动带指示器

随便推点

linux内核网络框架_inet_protosw-程序员宅基地

文章浏览阅读754次。SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol){ int retval; struct socket *sock; int flags; /* Check the SOCK_* constants for consistency. */ BUILD_BUG_ON(SOCK_CLOEXEC != O_CLOEXEC); BUILD_BUG_ON((SOCK_MAX | SOCK_TYPE_MASK) != SOCK_inet_protosw

时钟同步与时间同步的区别-程序员宅基地

文章浏览阅读9.3k次,点赞3次,收藏24次。时钟同步与时间同步的区别_时钟同步

期市财盛:9月12日美原油期货日内行情分析_期市黄金策略_原油1910合约可以考虑在4-程序员宅基地

文章浏览阅读845次。今日重要财经数据14:00 德国8月CPI月率终值14:45 法国8月CPI月率17:00 欧元区7月工业产出月率19:45 欧元区至9月12日欧洲央行主要再融资利率20:30 美国至9月7日当周初请失业金人数(万人)、美国8月季调后CPI月率22:30 美国至9月6日当周EIA天然气库存(亿立方英尺)美原油— CL1910 —美原油消息面:周三(9月1..._原油1910合约可以考虑在4

汇编环境配置以及代码编写调试_编辑调试编译汇编代码-程序员宅基地

文章浏览阅读1.2k次。环境配置1、集成环境 Masm for windows集成环境链接地址:http://download.csdn.net/detail/code_ac/9854934 下载之后按照安装说明进行安装即可2、自己进行安装环境(和1任意选一种)本方法的优势在于,可以选择自己喜欢的编辑器。例如atom,sublimetext,notepad++等 需要下载的软件为Dosbox,debug.exe(_编辑调试编译汇编代码

预加载和懒加载得区别(marksheng)_预加载和懒加载的优缺点-程序员宅基地

文章浏览阅读302次。懒加载也就是延迟加载。具体表现为:当访问一个页面的时候,先把img元素或是其他元素的背景图片路径替换成一张占位图的路径,这样就只需请求一次,只有当图片出现在浏览器的可视区域内时,才设置图片正真的路径,让图片显示出来。好处:很多页面,内容很丰富,页面很长,图片较多。比如瀑布流,图片数量多且大,如果一次性加载完毕,用户等待时间过长。 懒加载页面加载速度快、可以减轻服务器的压力、节约了流量,用户体验好。技术原理:页面中的img元素,如果没有src属性,浏览器就不会发出请求去下载图片,只有通_预加载和懒加载的优缺点

R语言ggplot2可视化:使用ggpubr包的ggbarplot函数可视化柱状图、使用width参数自定义柱状图的宽度_ggbarplot bar width-程序员宅基地

文章浏览阅读293次。R语言ggplot2可视化:使用ggpubr包的ggbarplot函数可视化柱状图、使用width参数自定义柱状图的宽度_ggbarplot bar width

推荐文章

热门文章

相关标签