android沉浸式状态栏 图片背景,Android App 沉浸式状态栏解决方案

本文介绍了如何在Android应用中实现沉浸式状态栏,包括兼容4.4及以上的实现方式,并解决了图片背景时的状态栏处理和DrawerLayout中的特殊情况。提供了详细的代码示例和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

伴随着 Android 5.0 发布的 Material Design,让 Android 应用告别了以前的工程师审美,迎来了全新的界面,灵动的交互,也让越来越多的 App 开始遵从 material design 设计原则,不再是以前拿着iOS设计稿,做着Android开发。本文就其中的沉浸式状态栏这一特性,描述其兼容到4.4的实现,以及一些使用中的小细节。

前言

在4.4之前状态栏一直是黑色的,在4.4中带来了 windowTranslucentStatus 这一特性,因此可以实现给状态栏设置颜色,如下图所示,状态栏颜色不再是黑色,而是可以定制的颜色。

a12d876f9271225d3950bcb2873facd2.png

国内将状态栏变色叫做沉浸式状态栏,时间久了,叫的人多了,大家就不再深究,默认了这种叫法。

需要解决的问题

4.4及其以上都是可以实现沉浸式状态栏效果的,5.0及其以上可以直接在主题中设置颜色,或者调用 Window 类中的 setStatusBarColor(int color) 来实现,这两种方式在5.0上都比较简单,但是如何兼容到4.4呢?

图片背景的页面,怎样让状态栏透明或者半透明(效果如下)?

d9ad29270a93626115fb3e8fbe2d9152.png

使用 DrawerLayout 时,主界面实现沉浸状态栏同时,怎样保证抽屉视图也能延伸到状态栏(如下图所示),且兼容到4.4?

60b3deb203ab4603c9d1fb7bf755b234.png

以上就是本文要解决的问题,下面给出解决方案。

解决方案

1. 给状态栏设置颜色

思路是:

先设置状态栏透明属性;

给根布局加上一个和状态栏一样大小的矩形View(色块),添加到顶上;

然后设置根布局的 FitsSystemWindows 属性为 true,此时根布局会延伸到状态栏,处在状态栏位置的就是之前添加的色块,这样就给状态栏设置上颜色了。

代码如下:

/**

* 设置状态栏颜色

*

* @param activity 需要设置的activity

* @param color 状态栏颜色值

*/

public static void setColor(Activity activity, int color) {

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

// 设置状态栏透明

activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

// 生成一个状态栏大小的矩形

View statusView = createStatusView(activity, color);

// 添加 statusView 到布局中

Vi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值