SystemUI中添加系统新图标

文章目录

  • 描述
  • 实现步骤
    • framework中修改
    • SystemUI中修改

描述

在系统状态栏的右侧添加一个自定义图标

实现步骤

framework中修改

1.定义右侧系统图标的插槽
frameworks/base/core/res/res/values/config.xml文件中内容修改如下所示,定义的图标为status_bar_custom_icon

 <string-array name="config_statusBarIcons">...<item><xliff:g id="id">@string/status_bar_custom_icon</xliff:g></item>...</string-array><string translatable="false" name="status_bar_custom_icon">custom_icon</string>

其中config_statusBarIcons中子元素的顺序表示右侧状态栏图标显示的顺序。

2.引用资源
frameworks/base/core/res/res/values/symbols.xml中添加status_bar_custom_icon,否则无法引用到该资源。

   <java-symbol type="string" name="status_bar_custom_icon" />

SystemUI中修改

1.PhoneStatusBarPolicy.java的修改
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java

--- a/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
+++ b/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
@@ -97,6 +97,7 @@ public class PhoneStatusBarPolicyprivate final String mSlotDataSaver;private final String mSlotLocation;private final String mSlotSensorsOff;
+    private final String mSlotCustomIcon;private final Context mContext;private final Handler mHandler = new Handler();
@@ -123,6 +124,7 @@ public class PhoneStatusBarPolicyprivate boolean mZenVisible;private boolean mVolumeVisible;private boolean mCurrentUserSetup;
+    private boolean mCustomIconVisible;private boolean mManagedProfileIconVisible = false;@@ -231,6 +233,12 @@ public class PhoneStatusBarPolicymIconController.setIconVisibility(mSlotSensorsOff,mSensorPrivacyController.isSensorPrivacyEnabled());+        // custom icon
+        mSlotCustomIcon = context.getString(com.android.internal.R.string.status_bar_custom_icon);
+        mCustomIconVisible = true;
+        mIconController.setIcon(mSlotCustomIcon,R.drawable.sys_custom_icon,null);
+        mIconController.setIconVisibility(mSlotCustomIcon,mCustomIconVisible);
+mRotationLockController.addCallback(this);mBluetooth.addCallback(this);mProvisionedController.addCallback(this);

2.sys_custom_icon.xml内容如下所示,这里面为了方便我使用的是蓝牙图标信息

<vector xmlns:android="http://schemas.android.com/apk/res/android"android:width="17dp"android:height="17dp"android:viewportWidth="17.0"android:viewportHeight="17.0"><groupandroid:translateY="0.5"android:translateX="0.5" ><pathandroid:pathData="M8.84,8l2.62,-2.62c0.29,-0.29 0.29,-0.75 0,-1.04L8.33,1.22L8.31,1.2c-0.3,-0.28 -0.76,-0.26 -1.03,0.04c-0.13,0.13 -0.2,0.31 -0.2,0.5v4.51L4.24,3.4c-0.29,-0.29 -0.74,-0.29 -1.03,0s-0.29,0.74 0,1.03L6.78,8l-3.56,3.56c-0.29,0.29 -0.29,0.74 0,1.03s0.74,0.29 1.03,0l2.83,-2.83v4.51c0,0.4 0.33,0.73 0.73,0.73c0.18,0 0.36,-0.07 0.5,-0.2l0.03,-0.03l3.12,-3.12c0.29,-0.29 0.29,-0.75 0,-1.04L8.84,8zM8.47,6.37V3.36l1.5,1.5L8.47,6.37zM8.47,12.63V9.62l1.5,1.5L8.47,12.63z"android:fillColor="#FFFFFF"/></group>
</vector>

这样右侧添加新图标的功能就完成了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/848676.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【AI】你要的U-KAN来了

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 U-KAN来了&#xff0c;快是真的快的&#xff0c;上个月才出的KAN&#xff0c;不得不说快。 先占个坑&#xff0c;有时间细看。 下面放上摘要 1. 正文 …

使用Python的xml.etree.ElementTree模块解析XML文件

使用Python的xml.etree.ElementTree模块解析XML文件 在Python中,处理XML文件是一项常见的任务。XML(可扩展标记语言)是一种用于编码文档的标记语言,它提供了一种结构化的方式来描述和传输数据。对于处理XML文件,Python标准库提供了xml.etree.ElementTree(通常简称为ET)模…

Linux中的`paste`命令:合并文件的简单艺术

Linux中的paste命令&#xff1a;合并文件的简单艺术 在Linux的世界中&#xff0c;文本处理是一项常见的任务。有时&#xff0c;我们可能需要将两个或多个文件的内容合并在一起&#xff0c;以创建新的输出。这就是paste命令的用武之地。paste命令允许你按行合并文件的内容&…

网络编程介绍(IP)(一)

定义&#xff1a;可以让设备中的程序与网络上其他设备中的程序进行数据交互&#xff08;实现网络通信的&#xff09;。 java.net.*包下提供了网络编程的解决方案。 基本的通信架构&#xff1a; CS架构&#xff08; Client客户端/Server服务端 &#xff09;&#xff1a; Clie…

Django 外键关联数据

在设计数据库的时候&#xff0c;是得需要通过外键的形式将各个表进行连接。 原先的表是这样的 要想更改成这样&#xff1a; 下面是操作步骤&#xff1a; 有两张表是关联的 # 在 models.py 里创建class Department(models.Model):"""部门表""&quo…

基于Arduino的简易磁悬浮装置原理图和源代码分享

磁悬浮装置原理 大家可能都玩过这种磁悬浮玩具&#xff0c;它们的工作原理与此类似。 首先&#xff0c;让我们了解一下这个原理&#xff0c;其实非常简单。它主要依赖于磁力对悬浮物体的控制。基本原理如下&#xff1a;在浮子的正下方放置一个霍尔传感器。当传感器检测到浮子向…

Android Compose 十:常用组件列表 监听

1 去掉超出滑动区域时的拖拽的阴影 即 overScrollMode 代码如下 CompositionLocalProvider(LocalOverscrollConfiguration provides null) {LazyColumn() {items(list, key {list.indexOf(it)}){Row(Modifier.animateItemPlacement(tween(durationMillis 250))) {Text(text…

七天进阶elasticsearch[one]

elasticSearch 概述 Elasticsearch是一个近实时的搜索平台。这意味着&#xff0c;从索引一个文档直到这个文档能够被搜索到有一个很小的延迟&#xff08;通常是一秒&#xff09; 集群 一个集群就是由一个或多个节点组织在一起&#xff0c; 它们共同持有你全部的数据&#x…

【第8章】SpringBoot实战篇之文章分类(上)

文章目录 前言一、后端代码1. CategoryController2. service3. CategoryMapper4. Category 二、测试1. 失败(校验)2.正常 总结 前言 从这开始进入文章相关的接口开发&#xff0c;本章主要介绍定义文章分类接口和新增文章分类 建表语句和测试用例&#xff0c;在SpringBoot专栏首…

pyspark中使用mysql jdbc报错java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决

报错信息&#xff1a; py4j.protocol.Py4JJavaError: An error occurred while calling o33.load. : java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 我的解决方法&#xff1a; 这个报错就是提示你找不到jar包&#xff0c;所以你需要去下载一个和你mysql版本匹配的j…

智慧园区智能化系统整体解决方案(111页PPT)

方案介绍&#xff1a; 智慧园区智能化系统整体解决方案是一个综合性的管理平台&#xff0c;它通过集成视频、报警、园区一卡通、产线管理、能耗管理、公共广播、信息发布等多种系统&#xff0c;实现园区的全方位智能化管理。该系统以基础管理平台为系统基础&#xff0c;提供系…

实验五、IPv4地址的子网划分,第1部分《计算机网络》

但凡你有点本事&#xff0c;也不至于一点本事都没有。 目录 一、实验目的 二、实验内容 三、实验小结 一、实验目的 完成本练习之后&#xff0c;您应该能够确定给定 IP 地址和网络掩码 的网络信息。本练习旨在让您掌握如何根据给定 IP 地址计算网络 IP 地址信息。 二、实验…

Python怎么把数据从CSV文件导入到MySQL数据库?

Python怎么把数据从CSV文件导入到MySQL数据库&#xff1f; 在数据处理和存储的过程中&#xff0c;我们经常需要将数据从CSV文件导入到MySQL数据库中。Python作为一种强大的编程语言&#xff0c;提供了多种工具和库来帮助我们完成这项任务。然而&#xff0c;对于初学者来说&…

【AI】DeepStream(09):deepstream-app源码详解

【AI】AI学习目录汇总 上一篇【AI】DeepStream(08):deepstream-app-示例演示 1、命令行参数解析 1)定义命令行参数 两个重要的命令行参数,-c 和 -i 分别用于指定配置文件和输入的url GOptionEntry entries[] = {{"version", v, 0

VBA发送邮件的常用方法?VBA如何自动发信?

VBA发送邮件需要配置什么设置&#xff1f;怎么使用VBA发送邮件&#xff1f; 使用VBA自动化处理任务是非常常见的&#xff0c;尤其是在发送邮件方面。通过VBA发送邮件&#xff0c;不仅可以提高工作效率&#xff0c;还能减少人为操作的错误。AokSend将详细介绍VBA发送邮件的常用…

MBR10100FCT-ASEMI肖特基二极管MBR10100FCT

编辑&#xff1a;ll MBR10100FCT-ASEMI肖特基二极管MBR10100FCT 型号&#xff1a;MBR10100FCT 品牌&#xff1a;ASEMI 封装&#xff1a;TO-220F 最大平均正向电流&#xff08;IF&#xff09;&#xff1a;10A 最大循环峰值反向电压&#xff08;VRRM&#xff09;&#xff1…

新风口还是割韭菜?全域外卖加盟究竟真是假?

随着全域外卖加盟模式的兴起&#xff0c;与之相关的骗局不断增多&#xff0c;并由此引发了外界对于全域外卖加盟模式真实性的质疑&#xff0c;全域外卖加盟是真的吗等相关问题更是一举成为全域外卖交流群中的热点话题。 事实上&#xff0c;就目前的情况而言&#xff0c;全域外卖…

数据资产运营平台解决方案

一、前言 数据资产管理运营平台是涵盖数据资产确权、登记、核验、质量评价、价值评估、定价、增值、入表、安全等全流程业务的数据要素市场基础设施。落实数据产业制度供给&#xff0c;构建数据要素市场&#xff0c;汇集数据资源供给服务&#xff0c;为数据要素流通交易提供平…

BERT应用——文本相似度计算

本文展示了如何利用BERT模型计算两个文本字符串之间的余弦相似度。BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是一种基于Transformer架构的预训练模型&#xff0c;广泛应用于自然语言处理领域。BERT的核心创新在于其双向训练的机制…

Cartographer学习笔记

Cartographer 是一个跨多个平台和传感器配置提供 2D 和 3D 实时同步定位和地图绘制 (SLAM) 的系统。 1. 文件关系 2. 代码框架 common: 定义了基本数据结构和一些工具的使用接口。例如&#xff0c;四舍五入取整的函数、时间转化相关的一些函数、数值计算的函数、互斥锁工具等…