代码路径:
frameworks/base/packages/SystemUI/res/layout/system_icons.xml
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarMobileView.java
frameworks/base/packages/SystemUI/res/layout/status_bar_mobile_signal_group.xml
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarWifiView.java
frameworks/base/packages/SystemUI/res/layout/status_bar_wifi_group.xml
在system_icons.xml文件中,BatteryMeterView 主要是处理电量UI显示,StatusIconContainer 主要是处理wifi和4GUI显示

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:systemui="http://schemas.android.com/apk/res-auto"android:id="@+id/system_icons"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center_vertical"><com.android.systemui.statusbar.phone.StatusIconContainer android:id="@+id/statusIcons"android:layout_width="0dp"android:layout_weight="1"android:layout_height="match_parent"android:paddingEnd="@dimen/signal_cluster_battery_padding"android:gravity="center_vertical"android:orientation="horizontal"/><com.android.systemui.BatteryMeterView android:id="@+id/battery"android:layout_height="match_parent"android:layout_width="wrap_content"android:clipToPadding="false"android:clipChildren="false"systemui:textAppearance="@style/TextAppearance.StatusBar.Clock" />
</LinearLayout>

在CollapsedStatusBarFragment.java文件中onViewCreated方法中statusIcons就是添加添加状态栏wifi图标和4G图标

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {super.onViewCreated(view, savedInstanceState);mStatusBar = (PhoneStatusBarView) view;if (savedInstanceState != null && savedInstanceState.containsKey(EXTRA_PANEL_STATE)) {mStatusBar.restoreHierarchyState(savedInstanceState.getSparseParcelableArray(EXTRA_PANEL_STATE));}//start  这里就是添加状态栏wifi图标和4G图标mDarkIconManager = new DarkIconManager(view.findViewById(R.id.statusIcons));mDarkIconManager.setShouldLog(true);Dependency.get(StatusBarIconController.class).addIconGroup(mDarkIconManager);//endmSystemIconArea = mStatusBar.findViewById(R.id.system_icon_area);mClockView = mStatusBar.findViewById(R.id.clock);showSystemIconArea(false);showClock(false);initEmergencyCryptkeeperText();initOperatorName();
}

在CollapsedStatusBarFragment.java文件中onDestroyView()方法中移除wifi图标和4G图标

@Override
public void onDestroyView() {super.onDestroyView();//start 这里就是移除wifi图标和4G图标Dependency.get(StatusBarIconController.class).removeIconGroup(mDarkIconManager);//endif (mNetworkController.hasEmergencyCryptKeeperText()) {mNetworkController.removeCallback(mSignalCallback);}
}

在StatusBarMobileView .java文件中就是加载4G信号图标和4G信号柱

public static StatusBarMobileView fromContext(Context context, String slot) {LayoutInflater inflater = LayoutInflater.from(context);StatusBarMobileView v = (StatusBarMobileView)inflater.inflate(R.layout.status_bar_mobile_signal_group, null);v.setSlot(slot);v.init();v.setVisibleState(STATE_ICON);return v;
}

在status_bar_mobile_signal_group.xml文件中,mobile_signal:4G信号柱 mobile_type:显示4GUI

<com.android.systemui.statusbar.StatusBarMobileViewxmlns:android="http://schemas.android.com/apk/res/android"xmlns:systemui="http://schemas.android.com/apk/res-auto"android:id="@+id/mobile_combo"android:layout_width="wrap_content"android:layout_height="match_parent"android:gravity="center_vertical" ><com.android.keyguard.AlphaOptimizedLinearLayoutandroid:id="@+id/mobile_group"android:layout_width="wrap_content"android:layout_height="match_parent"android:gravity="center_vertical"android:orientation="horizontal" ><ImageViewandroid:id="@+id/mobile_volte_dual"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:visibility="gone"android:layout_marginRight="2dp"android:layout_marginLeft="2dp"/><Spaceandroid:id="@+id/mobile_roaming_space"android:layout_height="match_parent"android:layout_width="@dimen/roaming_icon_start_padding"android:visibility="gone" /><ImageViewandroid:id="@+id/mobile_roaming"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/stat_sys_data_connected_roam_ex"android:contentDescription="@string/data_connection_roaming"android:layout_marginRight="2dp"android:visibility="gone" /><!-- 4G --><com.android.keyguard.AlphaOptimizedLinearLayoutandroid:layout_width="wrap_content"android:layout_height="match_parent"android:gravity="center_vertical"android:orientation="vertical"android:layout_marginRight="2dp"android:layout_marginLeft="2dp" ><ImageViewandroid:id="@+id/mobile_type"android:layout_height="wrap_content"android:layout_width="wrap_content"android:layout_gravity="center_horizontal"android:paddingEnd="1dp"android:visibility="gone" /><ImageViewandroid:id="@+id/mobile_in"android:layout_height="wrap_content"android:layout_width="wrap_content"android:layout_gravity="center_horizontal"android:visibility="gone"android:paddingEnd="2dp" /></com.android.keyguard.AlphaOptimizedLinearLayout><FrameLayoutandroid:id="@+id/inout_container"android:layout_height="17dp"android:layout_width="wrap_content"android:layout_gravity="center_vertical"android:visibility="gone" ><ImageViewandroid:id="@+id/mobile_out"android:layout_height="wrap_content"android:layout_width="wrap_content"android:src="@drawable/ic_activity_up"android:paddingEnd="2dp"android:visibility="gone" /></FrameLayout><!-- 信号柱 --><FrameLayoutandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"><com.android.systemui.statusbar.AnimatedImageViewandroid:id="@+id/mobile_signal"android:layout_height="wrap_content"android:layout_width="wrap_content"systemui:hasOverlappingRendering="false" /><ImageViewandroid:id="@+id/mobile_id"android:layout_width="wrap_content"android:layout_height="wrap_content" /></FrameLayout></com.android.keyguard.AlphaOptimizedLinearLayout>
</com.android.systemui.statusbar.StatusBarMobileView>

在StatusBarWifiView .java文件中就是加载wifi图标

public static StatusBarWifiView fromContext(Context context, String slot) {Log.d(TAG, "fromContext()");LayoutInflater inflater = LayoutInflater.from(context);StatusBarWifiView v = (StatusBarWifiView) inflater.inflate(R.layout.status_bar_wifi_group, null);v.setSlot(slot);v.init();v.setVisibleState(STATE_ICON);return v;
}

在status_bar_wifi_group.xml文件中wifi_signal表示wifi图标显示,wifi_in和wifi_out表示上行和下行

<com.android.systemui.statusbar.StatusBarWifiViewxmlns:android="http://schemas.android.com/apk/res/android"xmlns:systemui="http://schemas.android.com/apk/res-auto"android:id="@+id/wifi_combo"android:layout_width="wrap_content"android:layout_height="match_parent"android:gravity="center_vertical" ><com.android.keyguard.AlphaOptimizedLinearLayoutandroid:id="@+id/wifi_group"android:layout_width="wrap_content"android:layout_height="match_parent"android:gravity="center_vertical"android:layout_marginStart="2.5dp"><FrameLayoutandroid:id="@+id/inout_container"android:layout_height="17dp"android:layout_width="wrap_content"android:gravity="center_vertical" ><ImageViewandroid:id="@+id/wifi_in"android:layout_height="wrap_content"android:layout_width="wrap_content"android:src="@drawable/ic_activity_down"android:visibility="gone"android:paddingEnd="2dp"/><ImageViewandroid:id="@+id/wifi_out"android:layout_height="wrap_content"android:layout_width="wrap_content"android:src="@drawable/ic_activity_up"android:paddingEnd="2dp"android:visibility="gone"/></FrameLayout>//wifi图标显示<FrameLayoutandroid:id="@+id/wifi_combo"android:layout_height="wrap_content"android:layout_width="wrap_content"android:gravity="center_vertical" ><com.android.systemui.statusbar.AlphaOptimizedImageViewandroid:id="@+id/wifi_signal"android:layout_height="@dimen/status_bar_wifi_signal_size"android:layout_width="@dimen/status_bar_wifi_signal_size" /></FrameLayout><Viewandroid:id="@+id/wifi_signal_spacer"android:layout_width="@dimen/status_bar_wifi_signal_spacer_width"android:layout_height="4dp"android:visibility="gone" /><!-- Looks like CarStatusBar uses this... --><ViewStubandroid:id="@+id/connected_device_signals_stub"android:layout="@layout/connected_device_signal"android:layout_width="wrap_content"android:layout_height="wrap_content" /><Viewandroid:id="@+id/wifi_airplane_spacer"android:layout_width="@dimen/status_bar_airplane_spacer_width"android:layout_height="4dp"android:visibility="gone"/></com.android.keyguard.AlphaOptimizedLinearLayout>
</com.android.systemui.statusbar.StatusBarWifiView>

Android 10 SystemUI 如何添加4G信号和WiFi图标相关推荐

  1. Android 10 HAL 层添加HIDL实现过程

    本文以跑步机为假想场景介绍如何在Android Q(10)上添加HIDL,内容涉及HAL.HIDL进程间通讯.多线程以及串口操作,涵盖了标准的Android硬件服务的主要技术.编写时参考了两篇博客(见 ...

  2. Android 10.0 app添加校验锁(输入密码才能进入app)

    1.概述 最近有客户有需求要求给app添加锁,就是点击app 图标时,会弹出Dialog,需要输入密码才能进入app中,就是应用校验锁, 最开始想到在Launcher3中实现,但是如果更换了默认Lau ...

  3. Android 10 SystemUI报错

    一.单编译SystemUI报如下错误: eworks/base/packages/SystemUI/SystemUI-tests/android_common/javac/srcjars" ...

  4. Android 10 SystemUI 如何隐藏状态栏输入法图标

    代码路径: frameworks/base/services/core/java/com/android/server/inputmethod/InputMethodManagerService.ja ...

  5. Android 10.0 Launcher3 电话和短信app图标显示未读短信和未接来电的条数

    最近客户有需求要求在电话app图标显示未接来电的条数 在短信app图标上显示未读信息的条数 根据需求首选要在Launcher3的Launcher.java中,启动launcher时,查询未读短信和未接 ...

  6. android 状态栏wifi,【技术贴】教你修改状态栏里的wifi、信号、电量图标(转自论坛)...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 原帖地址:http://www.miui.com/forum.php?mod=viewthread&tid=1745173 素材地址:http:/ ...

  7. android 10.0版本合入GMS包

    gms包集成步骤: (1) 需要下载对应gms,国内需要通过VPN下载.下载后解压,文件目录:partner_gms.下载时,最好核对一下匹配的android版本. (2)依照路径打开gms.mk/g ...

  8. android版本10好不好,一加正式推送Android 10系统 流畅性怎么样

    近日,一加正式推送Android 10系统,不知道流畅性如何呢? 一加官方推特正式宣布Android 10系统已进行阶段性推送,从今天开始一加7和一加7 Pro手机用户将会陆续收到氧OS系统的更新,国 ...

  9. Android App 隐藏图标(Android 10除外)并隐式启动

    正好有个小需求,要把Android的App图标隐藏掉(Android 10除外,下面简单说明一下),并提供隐式启动. 实现这个功能非常简单,直接上代码. AndroidManifest.xml文件: ...

最新文章

  1. 【Python】编程笔记7
  2. Windows 7备份、还原功能详解
  3. SpringBoot 自带工具类~CollectionUtils
  4. IBM收购数据库安全公司 围剿Oracle之心不死
  5. python中ht_Python包学习-HTSeq
  6. Cordova的安装及环境配置
  7. LAYUI 树形表格(tree table)
  8. 黑苹果10.15.1睡眠唤醒死机问题
  9. Homekit智能开关/定时控制
  10. 计算机内存错误 要降频,电脑出现内存自动降频的问题该怎么办?
  11. JVM垃圾回收(二) 垃圾回收算法
  12. 0基础学Python第四天:Python3的基础语法
  13. 微信小程序提交上线时 定位接口提示未配置
  14. 范数(norm) 几种范数的简单介绍
  15. 51单片机实例5——基于单片机的花样彩灯
  16. micro-ros arduino esp32 ros2 笔记
  17. bzoj 2081: [Poi2010]Beads 哈希
  18. 展望未来 :今后十年可能诞生的21个新工作
  19. Android代码中发送Keycode按键
  20. OCI,CRI,CRI-O,Containerd 名词解释

热门文章

  1. python中的字体设置,pythontkinter设置界面字体样式_修改Python Tkinter中的默认字体...
  2. 鸿蒙之至始于衣冠,学坊之声/Class Story | 孝老爱亲,我们这样做——双语303班蚂蚁学坊亲子活动...
  3. 在JavaScript实现基于原型的继承
  4. mysql 一个月以前_mysql查询昨天 一周前 一月前 一年前的数据
  5. CPU VS GPU
  6. 【英语:语法基础】C4.日常对话-餐饮专题
  7. 怎样娶到比尔盖茨的女儿
  8. eap方法 华为手机怎么连wifi_怎样为WLAN选择最佳的EAP?
  9. 今年林业调查资质丙级与乙级如何办理怎么申报
  10. XP SP2激活总集