Android实现自定义状态栏

本文介绍了在Android中实现自定义状态栏的需求和多种实现思路。由于应用需要连接硬件并实时显示状态,需要一个全局一致的状态栏。文章探讨了BaseActivity、StatusBarService以及OneActivity+Fragment架构等方案,并详细讲解了使用StatusBarService实现状态栏的方法,包括定义状态栏布局、广播接收器以及所需权限设置。
摘要由CSDN通过智能技术生成

需求:

由于应用连接硬件,显示硬件工作的实时状态。一个应用只有一个Activity的可能性应该不大,除非你的应用架构是Activity+Fragment。所以需要实现一个自定义的状态栏。其实和系统自带的状态栏类似。

大海捞针,都没有找到解决办法,可能大家没有遇到这样的需求或者本人使用搜索引擎的水平太弱。

实现原理:

  1. 定义状态栏的布局文件。
  2. 定义广播接收状态信息更新到界面。

实现思路:

思路1:

  1. 使用BaseActivity,将状态栏做成公共的布局文件,然后使用include包含进来。
  2. 所有应用的Activity都继承BaseActivity进行编写代码
  3. 在BaseActivity中定义状态栏项的广播接收者,进行接收状态的更新。

思路2:

  1. 定义一个StatusBarService,在应用启动时将此服务开启
  2. StatusBarService启动时使用WindowManager类将状态栏布局加载进来。
  3. 同思路1.3

思路3:

  1. 整个应用使用OneActivity+Fragment架构
  2. 将状态栏布局写在Activity中,Fragment负责实现应用本身的功能。
  3. 同思路1.3
综合以上思路应用采用“思路2”,所以下面只会写思路2的实现。原因有以下几点:
  1. 因为项目已经开展很久,已有很多Activity所以未采用“思路3”,修改代码量太大。
  2. “思路1”虽然可以实现需求,但是考虑效率问题,每次打开一个Activity都要去创建状态栏,注册状态栏信息更新的广播,又因为项目中状态信息更新频率在1Hz,所以也未采用此思路。

思路2的实现:

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值