Android动画效果Widget(wifi)

实现和飞行模式widget类似,只贴出不同代码: 

  
  
  
  
  1. public class WifiWidget extends AppWidgetProvider { 
  2.   
  3.  private final static String SET_WIFI_ACTION = "com.archermind.wifi.widget.set_wifi"
  4.  private static final int START_ANIMATION = 0
  5.  private static final int END_ANIMATION = 1
  6.  private static WifiManager mWifiManager; 
  7.  private static int wifiState; 
  8.  private static boolean mRunAnimation = false
  9.  private static RemoteViews mRemoteViews; 
  10.   
  11.  private static Context mContext; 
  12.  private int [] mDrawable = { 
  13.    R.drawable.settings_icon_wifi_01, 
  14.    R.drawable.settings_icon_wifi_02, 
  15.    R.drawable.settings_icon_wifi_03 
  16.  }; 
  17.   
  18.  @Override 
  19.  public void onUpdate(Context context, AppWidgetManager appWidgetManager, 
  20.    int[] appWidgetIds) { 
  21.   if(mContext == null){ 
  22.    mContext = context
  23.   } 
  24.   super.onUpdate(context, appWidgetManager, appWidgetIds); 
  25.   mWifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); 
  26.   mRemoteViews = new RemoteViews(context.getPackageName(), R.layout.main); 
  27.   wifiState = mWifiManager.getWifiState(); 
  28.   if(wifiState == WifiManager.WIFI_STATE_DISABLED){ 
  29.    mRemoteViews.setImageViewResource(R.id.settings_wifi_switch, R.drawable.settings_switch_off); 
  30.   }else if(wifiState == WifiManager.WIFI_STATE_ENABLED){ 
  31.    mRemoteViews.setImageViewResource(R.id.settings_wifi_switch, R.drawable.settings_switch_on); 
  32.   } 
  33.   Intent intentClick = new Intent(SET_WIFI_ACTION); 
  34.         PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, 
  35.                 intentClick, 0); 
  36.         mRemoteViews.setOnClickPendingIntent(R.id.settings_wifi, pendingIntent); 
  37.   for(int i=0; i<appWidgetIds.length; i++){ 
  38.    appWidgetManager.updateAppWidget(appWidgetIds[i], mRemoteViews); 
  39.   } 
  40.  } 
  41.   
  42.   
  43.  @Override 
  44.  public void onReceive(Context context, Intent intent) { 
  45.   super.onReceive(context, intent); 
  46.   Log.e("method", "onReceive"); 
  47.   if(intent.getAction().equals(SET_WIFI_ACTION)){ 
  48.    wifiState = mWifiManager.getWifiState(); 
  49.    Log.e("==", "=="); 
  50.    Log.e("wifistate", ""+wifiState); 
  51.    if(wifiState == WifiManager.WIFI_STATE_DISABLED){ 
  52.     mWifiManager.setWifiEnabled(true); 
  53.     Log.i("open", "open"); 
  54.    }else if(wifiState == WifiManager.WIFI_STATE_ENABLED){ 
  55.     mWifiManager.setWifiEnabled(false); 
  56.     Log.i("close", "close"); 
  57.    } 
  58.   }else if(intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)){ 
  59.    Log.e("change", "change"); 
  60.    handleWifiStateChanged(intent.getIntExtra( 
  61.      WifiManager.EXTRA_WIFI_STATE,WifiManager.WIFI_STATE_UNKNOWN)); 
  62.   } 
  63.  } 
  64.  //判断wifi状态 
  65.  private void handleWifiStateChanged(int state){ 
  66.   Message msg = mHandler.obtainMessage(START_ANIMATION); 
  67.   msg.arg1 = 0
  68.   switch(state){ 
  69.   case WifiManager.WIFI_STATE_DISABLING: 
  70.    Log.e("state", "WIFI_STATE_DISABLING"); 
  71.    mRunAnimation = true
  72.    mHandler.sendMessage(msg); 
  73.    break; 
  74.   case WifiManager.WIFI_STATE_DISABLED: 
  75.    Log.e("state", "WIFI_STATE_DISABLED"); 
  76.    mRunAnimation = false
  77.    mHandler.sendEmptyMessage(END_ANIMATION); 
  78.    break; 
  79.   case WifiManager.WIFI_STATE_ENABLING: 
  80.    Log.e("state", "WIFI_STATE_ENABLING"); 
  81.    mRunAnimation = true
  82.    mHandler.sendMessage(msg); 
  83.    break; 
  84.   case WifiManager.WIFI_STATE_ENABLED: 
  85.    Log.e("state", "WIFI_STATE_ENABLED"); 
  86.    mRunAnimation = false
  87.    mHandler.sendEmptyMessage(END_ANIMATION); 
  88.    break; 
  89.   default: 
  90.    Log.e("state", "WIFI_STATE_UNKNOW"); 
  91.   } 
  92.  } 
  93.   
  94.  private Handler mHandler = new Handler(){ 
  95.  
  96.   @Override 
  97.   public void handleMessage(Message msg) { 
  98.    super.handleMessage(msg); 
  99.    AppWidgetManager appWidgetManger = AppWidgetManager 
  100.    .getInstance(mContext); 
  101.    int[] appIds = appWidgetManger.getAppWidgetIds(new ComponentName( 
  102.            mContext, WifiWidget.class)); 
  103.    if(msg.what == START_ANIMATION){ 
  104.     if(!mRunAnimation){ 
  105.      return ; 
  106.     } 
  107.     mRemoteViews.setImageViewResource(R.id.settings_wifi_state,mDrawable[msg.arg1]); 
  108.     appWidgetManger.updateAppWidget(appIds, mRemoteViews); 
  109.     Message message = mHandler.obtainMessage(START_ANIMATION); 
  110.     message.arg1 = (msg.arg1 + 1) % 3; 
  111.     mHandler.sendMessageDelayed(message, 200); 
  112.    }else if(msg.what == END_ANIMATION){ 
  113.     wifiState = mWifiManager.getWifiState(); 
  114.     mRemoteViews.setImageViewResource(R.id.settings_wifi_state,mDrawable[2]); 
  115.     if(wifiState == WifiManager.WIFI_STATE_ENABLED){ 
  116.      mRemoteViews.setImageViewResource(R.id.settings_wifi_switch,R.drawable.settings_switch_on); 
  117.     }else if(wifiState == WifiManager.WIFI_STATE_DISABLED){ 
  118.      mRemoteViews.setImageViewResource(R.id.settings_wifi_switch,R.drawable.settings_switch_off); 
  119.     } 
  120.     appWidgetManger.updateAppWidget(appIds, mRemoteViews); 
  121.    } 
  122.   } 
  123.  }; 

 

你可能感兴趣的:(android,移动开发,wifi,widget,动画效果)