android沉浸,Android沉浸模式状态栏解决方案

如何实现Android沉浸式状态栏

沉浸式通知栏Android4.4以上才支持的新特性。4.3不支持。

创新互联客户idc服务中心,提供成都机柜租用、成都服务器、成都主机托管、成都双线服务器等业务的一站式服务。通过各地的服务中心,我们向成都用户提供优质廉价的产品以及开放、透明、稳定、高性价比的服务,资深网络工程师在机房提供7*24小时标准级技术保障。

具体实现方式如下:

1.新建个公共style,设置android:fitsSystemWindows=true

!-- 设置应用布局时是否考虑系统窗口布局;true -- style name="AppBaseTheme" parent="android:Theme.Light.NoTitleBar" item name="android:fitsSystemWindows"true/item /style

2. 修改AndroidManifest.xml,让所有的activity样式默认设置为AppBaseTheme(*不同项目要灵活处理,笔者项目的activity样式都是统一的所以这样设置没问题,但是实际情况下不同的activity可能调用的样式不一样,需要读者自行按自己的项目来设置)

application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppBaseTheme" android:name="****"

3.新增沉浸式通知栏实现类,实现原理很简单。

1)判断当前系统版本是不是4.4以上,判断代码如下:

if (VERSION.SDK_INT = VERSION_CODES.KITKAT)

2)如果大于4.4则设置状态栏透明化,代码如下:

window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS,WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

3)获取activity的根rootView(DecorView),然后创建一个新的view stateBarView并把它添加到rootView(这里手动给它设置个ID,下次进来时先判断rootView是否已创建stateBarView,如果已创建则直接获取该View这样可以防止重复创建,导致内存泄露)

Android 沉浸式状态栏

沉浸式状态栏是一种比较常见的UI风格,接下来就去看看怎么实现它。

在styles.xml里增加TranslucentTheme,我们这里minSdkVersion 是以21为准,低于安卓5.0以下的手机很少了,就不适配了。

对于这种没有标题栏,图片沉浸到状态栏的效果,我们已经实现了。如果是有标题栏呢?比如加个Toolbar会变成下面这样:

对于有标题的页面,我们希望状态栏颜色跟标题栏一样就行了,不希望标题栏上移跟状态栏重叠,我们可以在布局文件根视图设置如下属性,这个相当于设置了个padding让状态栏下移,当然,为了让状态栏颜色跟标题栏一样,你还需要给根视图设置一样的背景色(因为状态栏实际是透明的)。

运行看看,已经实现了我们的要求。

android沉浸式

1、如何修改状态栏颜色。

2、如何修改状态栏文字颜色。

3、如何不被虚拟键隐藏,或隐藏虚拟键。

4、如何消除沉浸式。

5、如何修改导航栏内部的fragment的状态栏颜色。

可参考:

在styles.xml中添加style

在manifest.xml文件中进行配置

添加依赖

可以参考:暂无

以下内容可以直接复制到工具类中,在activity初始化的时候调用即可。文字颜色分亮色暗色,分别是白色和黑色。

可以参考:

以下方法可以放置在工具类中方便调用。

1、不隐藏底部虚拟键,不隐藏状态栏,布局顶部延伸至状态栏顶部不被虚拟键遮挡,且状态栏透明。

2、隐藏底部的虚拟键和状态栏

fragment的状态栏颜色其实就是activity状态栏颜色,所以还是去改变activity的状态栏颜色这么一个思路。

使用第三方组件,所以添加依赖

给导航栏控件添加tab切换事件监听,然后动态改变状态栏颜色即可,同样使用barUtils工具类。

最后在推荐一个github上的关于沉浸式效果的组件:

Android 沉浸式/透明式状态栏、导航栏

Android 从4.4开始引进透明状态栏和导航栏的概念,并且在5.0进行了改进,将透明变成了半透明的效果。虽然此特性最早出现在ios,但不否认效果还是很赞的。

至于4.4以下的手机,就不要考虑此特性了,好在4.4以下的手机份额已经非常小了。

我们先来看一下透明状态栏的实现,两种常见效果图如下:

虚拟导航栏并不是所有的手机都有,华为的手机多比较常见,就是上图屏幕底部按钮那块区域。设置导航栏和状态栏类似:

这是官方的解释,大致意思就是我们在布局的最外层设置 android:fitsSystemWindows="true",会在屏幕最上方预留出状态栏高度的padding。

由于fitsSystemWindows属性本质上是给当前控件设置了一个padding,所以我们设置到根布局的话,会导致状态栏是透明的,并且和窗口背景一样。

但是多数情况,我们并不在根布局设置这个属性,我们想要的无外乎是让内容沉浸在状态栏之中。所以我们经常设置在最上端的图片背景、Banner之类的,如果是Toolbar的,我们可以使用一层LinearLayout包裹,并把这个属性设置给LinearLayout,这样就可以避免Toolbar的内容下沉了。如:

上述方法可以解决普通页面的透明式状态栏需求,如有复杂需求可以参考下面这些:

Android 系统状态栏沉浸式/透明化完整解决方案

Android 沉浸式状态栏的实现

Android沉浸式状态栏(透明状态栏)最佳实现

还有开源库推荐: ImmersionBar

网站名称:android沉浸,Android沉浸模式状态栏解决方案
网站地址:https://www.cdcxhl.com/article42/dsegjec.html

成都网站建设公司_创新互联,为您提供网站维护品牌网站制作品牌网站建设网站内链微信公众号网站设计公司

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都app开发公司