在2.3源码中查看状态栏图标的时候遇到个问题,麻烦高手帮忙解决一下:
关于通信信号、网络信号的图标,ANDROID源代码中有两套,一套是灰的,一套是绿的,如下图所示。
绿的图标名字中比灰的多了个"_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时,就显示绿的呢?
关于通信信号、网络信号的图标,ANDROID源代码中有两套,一套是灰的,一套是绿的,如下图所示。
绿的图标名字中比灰的多了个"_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时,就显示绿的呢?