Android下拉框WIFI图标更新
Posted dfqin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android下拉框WIFI图标更新相关的知识,希望对你有一定的参考价值。
下拉框里面WIFI组件的定义为WifiTitle(frameworks/base/packages/SystemUI),图标定义在WifiIcons里面,以太网和手机网络图标定义为EthernetIcons和TelephonyIcons。而图标的更新逻辑放在类SignalController里面:
通过上面的代码可以看到,主要是根据是当前网类型的状态(mCurrentState)否连接上网络(并不代表此网络可以上网),是否开启此网络类型(例如WIFI开关)确定显示的图标。而SignalController是个基类,它有三个子类分别为:EthernetSignalController、WifiSignalController和MobileSignalController,除了MobileSignalController覆盖了函数getQsCurrentIconId(),其他两个类都使用了基类的实现。
关于WIFI的实现,我们可以看到在mCurrentState.connected为true的情况下,又要区分
mCurrentState.inetCondition是否为true来显示不同的图标。在android10上面inetCondition为false时的图标为,而在后面的版本改为了,这个值的含义可以理解为当前的网络的数据传输类型是不是本类型(以太网、WIFI、蜂窝)。inetCondition的赋值是在updateConnectivity()函数中实现的,通过代码可以得知只要服务端(ConnectivityService)返回的当前网络类型等于以太网或WIFI,此类型的inetCondition就为true,但是蜂窝网络不一样,返回类型类型如果不对,但是当前状态不是默认时也会赋值为true(不为默认的含义?)。
图标更新的流程大致为有三种(1、切换用户;2、收到广播: ConnectivityManager.CONNECTIVITY_ACTION, ConnectivityManager.INET_CONDITION_ACTION;ConnectivityService的 )情况触发调用NetworkControllerImpl.updateConnectivity(),函数updateConnectivity()主要工作是用ConnectivityService获取到当前的数据传输方式。
上面获取到数据传输方式后会分别掉以太网、蜂窝网和WIFI的更新,这里调用后就会走到我们上面赋值inetCondition的函数。
以上是关于Android下拉框WIFI图标更新的主要内容,如果未能解决你的问题,请参考以下文章
android 多级下拉菜单实现教程 NiceSpinner 文字展示不全 NiceSpinner demo NiceSpinner加图标 可以在下拉框的选项(item)中加图片:
android 多级下拉菜单实现教程 NiceSpinner 文字展示不全 NiceSpinner demo NiceSpinner加图标 可以在下拉框的选项(item)中加图片: