您的位置:首页 > 理论基础 > 计算机网络

请教 ANDROID 通信信号、网络信号图标的颜色问题

2011-11-23 13:23 357 查看
在2.3源码中查看状态栏图标的时候遇到个问题,麻烦高手帮忙解决一下:

关于通信信号、网络信号的图标,ANDROID源代码中有两套,一套是灰的,一套是绿的,如下图所示。



2011-6-15 09:52:06 上传
下载附件
(59.85 KB)

绿的图标名字中比灰的多了个"_fully"。

如灰的图标名为 stat_sys_signal_0.png

那么绿的图标名为 stat_sys_signal_0_fully.png

我的问题是:这两套图标分别是在什么时候用的呢?

================================================================

我跟了一下代码 见StatusbarPolicy.java

一、两套图片资源在这个二维数组被引用。

private static final int[][] sSignalImages = {

{ R.drawable.stat_sys_signal_0,

R.drawable.stat_sys_signal_1,

R.drawable.stat_sys_signal_2,

R.drawable.stat_sys_signal_3,

R.drawable.stat_sys_signal_4 },

{ R.drawable.stat_sys_signal_0_fully,

R.drawable.stat_sys_signal_1_fully,

R.drawable.stat_sys_signal_2_fully,

R.drawable.stat_sys_signal_3_fully,

R.drawable.stat_sys_signal_4_fully }

};

二、系统定义了一个一维数组来获取当前要用的图片资源。

int[] iconList;

iconList = sSignalImages[mInetCondition];

三、那么关键就是这个mInetCondition了,它要么是0 要么是1。在别一个地方又看到,它是等于inetCondition

mInetCondition = inetCondition;

四、找到这个inetCondition 它的值又是如下方式取得的。

int connectionStatus = intent.getIntExtra(ConnectivityManager.EXTRA_INET_CONDITION, 0);

int inetCondition = (connectionStatus > INET_CONDITION_THRESHOLD ? 1 : 0);

INET_CONDITION_THRESHOLD 的值为 50

ConnectivityManager.EXTRA_INET_CONDITION 的定义如下:

/**

* The lookup key for an int that provides information about

* our connection to the internet at large. 0 indicates no connection,

* 100 indicates a great connection. Retrieve it with

* {@link android.content.Intent@getIntExtra(String)}.

* {@hide}

*/

public static final String EXTRA_INET_CONDITION = "inetCondition";

这是不是说连接到因特网的连接分为0~100 101个level。

0~50 时,这些信号相关的图标就显示灰色的。

51~100时,就显示绿的呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: