信号图标显示

信号图标显示

 

状态栏上信号图标的处理在SignalClusterView.java中,这个类继承了LinearLayout,完成对其内包含的各式图标的布局。
类中,主要分两个方面进行图标显示与更新,Wifi与Mobile。
ImageView mWifi, mWifiActivity;
ImageView mMobile, mMobileActivity, mMobileType;
该类实现了接口NetworkController.SignalCluster,外界可以通过这个接口来设置WiFi及信号图标
public void setWifiIndicators(boolean visible, boolean connected, int strengthIcon, int activityIcon, String contentDescription);
public void setMobileDataIndicators(boolean visible, int strengthIcon, boolean mDataConnected, int activityIcon, int typeIcon, String contentDescription, String typeContentDescription, int phoneColor, int phoneId);
public void setIsAirplaneMode(boolean is);
根据设置的相关属性,调用apply()来进行相关界面的显示、更新。

信号图标区域的布局文件:
res/layout/signal_cluster_view.xml
其中,主要包含两大块:
wifi:WiFi图标及数据流向;
<FrameLayout android:id=”@+id/wifi_combo">
 <ImageView android:id="@+id/wifi_signal" />
 <ImageView android:id="@+id/wifi_inout" />
</FrameLayout>
mobile:Mobile图标和移动数据流向;
<LinearLayout android:id="@+id/mobile_combo">
 <ImageView android:id="@+id/mobile_signal" />
 <FrameLayout android:id="@+id/mobile_data_type">
  <ImageView android:id="@+id/mobile_type" />
  <ImageView android:id="@+id/mobile_inout" />
 </FrameLayout>
</LinearLayout>
以上为UI处理过程


在类NetworkController中,会接收到下层上报的关于数据连接相关的信息。其注册了对Phone状态的监听:PhoneStateListener.LISTEN_DATA_CONNECTION_STATE,PhoneStateListener.LISTEN_DATA_ACTIVITY;
接收广播消息:ConnectivityManager.CONNECTIVITY_ACTION;

通过接收相关消息(广播),调用方法refreshView(int phoneId)来设置相关的信号图标,包含:
Airplane: mAirplaneMode
Wifi: mWifiActivityIcon, mWifiIcon
Mobile: mMobileActivityIconId, mDataSignalIconId
并通过接口SignalCluster调用SingalClusterView中实现的方法进行显示与更新。

 

posted @ 2013-03-27 10:46  hunterDing  阅读(928)  评论(0编辑  收藏  举报