请教 ANDROID 通信信号、网络信号图标的颜色问题
2011-11-23 13:23
357 查看
在2.3源码中查看状态栏图标的时候遇到个问题,麻烦高手帮忙解决一下:
关于通信信号、网络信号的图标,ANDROID源代码中有两套,一套是灰的,一套是绿的,如下图所示。
![](http://www.eoeandroid.com/data/attachment/forum/201106/15/0952061vshur1mquqz00d0.jpg)
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时,就显示绿的呢?
关于通信信号、网络信号的图标,ANDROID源代码中有两套,一套是灰的,一套是绿的,如下图所示。
![](http://www.eoeandroid.com/data/attachment/forum/201106/15/0952061vshur1mquqz00d0.jpg)
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时,就显示绿的呢?
相关文章推荐
- Android 与 PC网络通信之中文乱码问题解决
- android 4.0 网络信号图标不存在
- 关于 Android 5.0 原生系统网络图标上的感叹号问题解决方法
- 解决两个 Android 模拟器之间无法网络通信的问题
- Android 与 PC网络通信之中文乱码问题解决
- 【Cocos2dx网络通信(Http&Socket)编译到Android总结】编译加入curl关联lib与头文件等问题
- [Android开发常见问题-20] Android 网络通信框架Volley简介(Google IO 2013)
- Android 怎么获取手机网络信号问题
- Android 4.0以后主线程访问网络问题
- 网络通信的中文乱码问题
- Android实时获取网络信号
- android 开发 常用到的一些网络通信包
- Android网络通信框架Volley的学习笔记
- 网络通信中的常见问题
- Android网络通信android-async-http入门
- Android 网络通信方式
- Android Socket网络通信
- Android网络问题
- 【代码】Android的网络通信详解HttpUrlConnection和HttpClient
- Android里网络通信协议详解