• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > android沉浸式状态栏、变色状态栏、透明状态栏、修改状态栏颜色及透明

android沉浸式状态栏、变色状态栏、透明状态栏、修改状态栏颜色及透明

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android沉浸式状态栏、变色状态栏、透明状态栏、修改状态栏颜色及透明等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

android沉浸式状态栏、变色状态栏、透明状态栏、修改状态栏颜色及透明


首先我要区分清楚沉浸式状态栏与变色状态栏。

沉浸式状态栏指的是,状态栏隐藏,在手指做了相关操作后,状态栏显示出来,例如视频播放器,在播放视频时是隐藏状态栏的,但是点击屏幕的时候,状态栏会显示出来,再例如文本阅读器,在阅读的时候是全屏的,然后从屏幕上方下滑或者下方上划,虚拟键和状态栏出现了,但却是直接覆盖在程序文字上的,这是所谓的沉浸式状态栏。
那么大家平时所说的状态栏与导航栏颜色相同,或者透明,指的是变色状态栏,或者透明状态栏。
对于这两个概念的理解,大家可以参考http://www.androidchina.net/3520.html。

v19(4.4)以后开始支持android:windowTranslucentStatus属性,透明状态栏,而v21(5.0)以后出现变色状态栏,可以自由设置状态栏颜色。
通过这两个新特性,可以帮助我们快速的实现4.4以后的状态栏与app的导航栏颜色相同。

实现变色导航栏主要是通过styles里面的theme来实现的:


    

接下来定义主题BaseAppTheme,继承于上面定义的AppTheme.Base主题,该主题定义了三个颜色,分别指定状态栏、toolbar和页面中重点控件的颜色(颜色自己去定义)。

对于AppCompat主题中,各个颜色属性的含义,可以参考下图

这里写图片描述

然后定义一个AppTheme,继承于BaseAppTheme,

5.0:新建“values-v21\styles.xml”

在里面定义适用与5.0系统的AppTheme,在5.0系统中提出的变色状态栏,因此这里我们只需定义一个AppTheme继承于BaseAppTheme代码如下:

运行的结果是,在4.4系统上,完全正常显示,而在5.0上,toolbar正常显示了透明色,但是状态栏显示的是灰色透明色
4.4系统:
这里写图片描述

5.0系统:
这里写图片描述
原因应该是,4.4系统支持的就是透明状态栏,所以只需要将状态栏颜色设为透明,即可到达效果。
而5.0支持的是变色状态栏,得到的效果与我们预期不同,特做如下处理:

在代码中设置,判断当sdk大于等于5.0时,执行以下代码

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    Window window = getWindow();
    window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
    window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
    window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
    window.setStatusBarColor(Color.TRANSPARENT);
}

运行后,在4.4以及5.0系统上都能实现透明效果了,效果图如下:
这里写图片描述

源码下载

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-05-26Android的Kotlin秘方(I):OnGlobalLayoutListener,
  • 2017-05-26安卓开发学习经历2--《第一行代码》coolweather项目SQL语句同一个“陷阱”掉两次 注意转义字符等特殊字符正确书写 关于Id字段自增加体会,coolweather
  • 2017-05-26切换横竖屏的时候Activity的生命周期变化情况,activity生命周期
  • 2017-05-26Android View体系(七)从源码解析View的measure流程
  • 2017-05-26android:Activity启动模式之singleInstance
  • 2017-05-26android:Activity数据传递之全局对象(application)
  • 2017-05-26在Windows下快速搭建React Native Android开发环境
  • 2017-05-26android studio 图片资源的放置位置,你中枪了吗?
  • 2017-05-26Android应用项目中BaseAdapter、SimpleAdapter和ArrayAdapter中的三种适配器,simplearrayadapter
  • 2017-05-26更简单更全的material design状态栏

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • IRQ全称为Interrupt Request
    • Linux目录与文件权限的意义
    • Android安全专项之Xposed劫持用户名密码实践
    • 自定义Dialog,android自定义dialog
    • 2.3.2 EditText(输入框)详解
    • AndroidUSB转串口通信开发基本流程
    • 网络连接异常处理工具,网络连接异常处理
    • Android系统的五种数据存储形式(一),android数据存储
    • Android Log Tag含义,androidlogtag含义
    • Android中使用ExpandableListView实现微信通讯录界面(完善仿微信APP),expandablelistview

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有