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 PhoneStatusBarPolicy
     private 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 PhoneStatusBarPolicy
     private boolean mZenVisible;
     private boolean mVolumeVisible;
     private boolean mCurrentUserSetup;
+    private boolean mCustomIconVisible;
 
     private boolean mManagedProfileIconVisible = false;
 
@@ -231,6 +233,12 @@ public class PhoneStatusBarPolicy
         mIconController.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">
    <group
        android:translateY="0.5"
        android:translateX="0.5" >
        <path
            android: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>

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

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值