“沉浸式”体验?异形屏适配?我把他们扒光了明明白白告诉你应该这样做

本文详细介绍了Android系统UI的颜色变化历程,从Android 4.4到6.0的逐步演进,以及如何实现沉浸式体验。通过理解各种System UI Flag,开发者可以设置状态栏和导航栏的颜色、透明度,并处理不同场景下的适配问题,如复杂背景、纯色背景和电子书阅读器应用。最后,文章提到了挖孔屏和国内定制系统的适配挑战。
摘要由CSDN通过智能技术生成

看似复杂的沉浸式体验设计,其实也就是在处理以下两个 System UI与用户布局(setContentView)之间说不清理还乱的关系:

  • StatusBar 系统状态栏
  • NavigationBar 系统导航栏

网上类似“沉浸式状态栏”的文章一搜一大把,且先不吐槽所谓的“沉浸式状态栏”说法正确与否,随便一篇文章都会告诉你,要实现沉浸式体验有两个关键地方:

  • window.decorView.systemUiVisibility = SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or SYSTEM_UI_FLAG_LAYOUT_STABLE
  • window.statusBarColor = Color.TRANSPARENT

运行代码,果然实现了“沉浸式状态栏”的效果。可是我相信大多数人心里是迷糊的:

  • SYSTEM_UI_FLAG_LAYOUT_FULLSCREENSYSTEM_UI_FLAG_LAYOUT_STABLE 是什么?
  • 为什么要设置状态栏颜色透明?设置其他颜色不可以么?

以及接下来可能碰到的各种“沉浸式状态栏”带来的坑:

  • Bull shit!用户布局 与 状态栏信息 重叠了
  • 可交互按钮被手机的“刘海”给挡住了
  • 状态栏上时间等信息的文字颜色是黑色,搭配上状态栏蓝色的背景,好丑啊

在讲解 沉浸式体验的实现异形屏 适配前,我们需要先补下课,了解些微的基础知识:

各种Flag

STATUS_BAR_HIDDEN

/**
 * Android 3.0(API 11)加入 
 *
 * 已被废弃,现等同于 SYSTEM_UI_FLAG_LOW_PROFILE
 */
public static final int STATUS_BAR_HIDDEN = SYSTEM_UI_FLAG_LOW_PROFILE;

STATUS_BAR_VISIBLE

/**
 * Android 3.0(API 11)加入 
 * 
 * 已被废弃,现等同于 SYSTEM_UI_FLAG_VISIBLE
 */
public static final int STATUS_BAR_VISIBLE = SYSTEM_UI_FLAG_VISIBLE;

SYSTEM_UI_FLAG_VISIBLE

/**
 * Android 4.0(API 14)加入
 *
 * 表明设置系统UI(status bar等)为可见状态,
 * 这也是默认效果。
 */
public static final int SYSTEM_UI_FLAG_VISIBLE = 0;

SYSTEM_UI_FLAG_LOW_PROFILE

/**
 * Android 4.0(API 14)加入
 *
 * 低配模式,这里的低配不是传统意义上的低配置,
 * 我更倾向于称其为低调模式,设置系统UI进入不显眼的“低配置”模式。
 * 具体表现为:状态栏 和/或 导航栏某些图标 可能变暗
 */
public static final int SYSTEM_UI_FLAG_LOW_PROFILE = 0x00000001;

 

SYSTEM_UI_FLAG_HIDE_NAVIGATION

/**
 * Android 4.0(API 14)加入
 * 
 * 如果设置了 SYSTEM_UI_FLAG_LOW_PROFILE 后还是觉得系统UI显眼
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值