成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android Widget實(shí)例代碼解析

移動(dòng)開發(fā)
Android Widget實(shí)例代碼解析是本文要介紹的內(nèi)容,主要是來了解并學(xué)習(xí)Android Widget實(shí)例的應(yīng)用,來看內(nèi)容詳解。

Android Widget實(shí)例代碼解析是本文要介紹的內(nèi)容,主要是來了解并學(xué)習(xí)Android Widget實(shí)例的應(yīng)用,通過代碼來實(shí)現(xiàn)內(nèi)容的講解,具體內(nèi)容的實(shí)現(xiàn)來看本文詳解。

下面的代碼分為3個(gè)文件可以清楚的看到整個(gè)框架,主要是AppWidgetProvider類中的onUpdate、onDeleted、onEnabled、onDisabled和updateAppWidget方法之間的狀態(tài)改變,使用Logcat仔細(xì)分析一個(gè)widget的生命周期。

  1. package com.example.android.apis.appwidget;     
  2. import android.appwidget.AppWidgetManager;  
  3. import android.appwidget.AppWidgetProvider;  
  4. import android.content.ComponentName;  
  5. import android.content.Context;  
  6. import android.content.Intent;  
  7. import android.content.pm.PackageManager;  
  8. import android.os.SystemClock;  
  9. import android.util.Log;  
  10. import android.widget.RemoteViews;    
  11. import java.util.ArrayList;  
  12. import com.example.android.apis.R;    
  13.  
  14. 涉及到的文件有  
  15.  
  16. ExampleAppWidgetConfigure.java  
  17. ExampleBroadcastReceiver.java  
  18. res/layout/appwidget_configure.xml  
  19. res/layout/appwidget_provider.xml  
  20. res/xml/appwidget_provider.xml  
  21.  
  22.  
  23. public class ExampleAppWidgetProvider extends AppWidgetProvider {  
  24.  
  25. private static final String TAG = "ExampleAppWidgetProvider"; //logcat調(diào)試信息    
  26. public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {  
  27. Log.d(TAG, "onUpdate");  
  28.  
  29. // - 創(chuàng)建一個(gè)RemoteViews 對(duì)象  
  30. // - 設(shè)置RemoteViews 對(duì)象的文本  
  31. // - 告訴AppWidgetManager 顯示 views對(duì)象給widget.    
  32. final int N = appWidgetIds.length;  
  33. for (int i=0; i public void onEnabled(Context context) {  
  34. Log.d(TAG, "onEnabled");  
  35. // 當(dāng)widget創(chuàng)建時(shí)注冊(cè)TIMEZONE_CHANGED和 TIME_CHANGED改變的廣播獲取這些時(shí)間和區(qū)域的改變事件  
  36.  
  37. PackageManager pm = context.getPackageManager();  
  38. pm.setComponentEnabledSetting(  
  39. new ComponentName("com.example.android.apis", ".appwidget.ExampleBroadcastReceiver"),  
  40. PackageManager.COMPONENT_ENABLED_STATE_ENABLED,  
  41. PackageManager.DONT_KILL_APP);  
  42. }    
  43. public void onDisabled(Context context) {  
  44.  
  45. Log.d(TAG, "onDisabled");  
  46. Class clazz = ExampleBroadcastReceiver.class;  
  47. PackageManager pm = context.getPackageManager();  
  48. pm.setComponentEnabledSetting(  
  49. new ComponentName("com.example.android.apis", ".appwidget.ExampleBroadcastReceiver"),  
  50. PackageManager.COMPONENT_ENABLED_STATE_ENABLED,  
  51. PackageManager.DONT_KILL_APP);  
  52. }    
  53. static void updateAppWidget(Context context, AppWidgetManager appWidgetManager,  
  54. int appWidgetId, String titlePrefix) {  
  55. Log.d(TAG, "updateAppWidget appWidgetId=" + appWidgetId + " titlePrefix=" + titlePrefix);  
  56.  
  57. CharSequence text = context.getString(R.string.appwidget_text_format,  
  58. ExampleAppWidgetConfigure.loadTitlePref(context, appWidgetId),  
  59. "0x" + Long.toHexString(SystemClock.elapsedRealtime()));    
  60. RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.appwidget_provider);  
  61. views.setTextViewText(R.id.appwidget_text, text);    
  62. appWidgetManager.updateAppWidget(appWidgetId, views);  
  63. }  
  64. }    
  65.  
  66. package com.example.android.apis.appwidget;    
  67. import android.appwidget.AppWidgetManager;  
  68. import android.appwidget.AppWidgetProvider;  
  69. import android.content.BroadcastReceiver;  
  70. import android.content.ComponentName;  
  71. import android.content.Context;  
  72. import android.content.Intent;  
  73. import android.os.SystemClock;  
  74. import android.util.Log;  
  75. import android.widget.RemoteViews;    
  76. import java.util.ArrayList;    
  77.  
  78. import com.example.android.apis.R;    
  79.  
  80. public class ExampleBroadcastReceiver extends BroadcastReceiver {    
  81. public void onReceive(Context context, Intent intent) {  
  82. Log.d("ExmampleBroadcastReceiver", "intent=" + intent);    
  83. // For our example, we'll also update all of the widgets when the timezone  
  84. // changes, or the user or network sets the time.  
  85. String action = intent.getAction();  
  86. if (action.equals(Intent.ACTION_TIMEZONE_CHANGED)  
  87. || action.equals(Intent.ACTION_TIME_CHANGED)) {  
  88. AppWidgetManager gm = AppWidgetManager.getInstance(context);  
  89. ArrayList appWidgetIds = new ArrayList();  
  90. ArrayList texts = new ArrayList();    
  91. ExampleAppWidgetConfigure.loadAllTitlePrefs(context, appWidgetIds, texts);    
  92. final int N = appWidgetIds.size();  
  93. for (int i=0; i}  
  94.  
  95.  
  96. package com.example.android.apis.appwidget;    
  97. import android.app.Activity;  
  98. import android.appwidget.AppWidgetManager;  
  99. import android.content.Context;  
  100. import android.content.Intent;  
  101. import android.content.SharedPreferences;  
  102. import android.os.Bundle;  
  103. import android.util.Log;  
  104. import android.view.View;  
  105. import android.widget.EditText;    
  106. import java.util.ArrayList;    
  107.  
  108. import com.example.android.apis.R;    
  109.  
  110. public class ExampleAppWidgetConfigure extends Activity {  
  111. static final String TAG = "ExampleAppWidgetConfigure";    
  112. private static final String PREFS_NAME 
  113. "com.example.android.apis.appwidget.ExampleAppWidgetProvider";  
  114. private static final String PREF_PREFIX_KEY = "prefix_";    
  115. int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID;  
  116. EditText mAppWidgetPrefix;    
  117. public ExampleAppWidgetConfigure() {  
  118. super();  
  119. }    
  120. @Override  
  121. public void onCreate(Bundle icicle) {  
  122. super.onCreate(icicle);    
  123. setResult(RESULT_CANCELED);    
  124. setContentView(R.layout.appwidget_configure);    
  125. mAppWidgetPrefix = (EditText)findViewById(R.id.appwidget_prefix);    
  126. findViewById(R.id.save_button).setOnClickListener(mOnClickListener);    
  127. Intent intent = getIntent();  
  128. Bundle extras = intent.getExtras();  
  129. if (extras != null) {  
  130. mAppWidgetId = extras.getInt(  
  131. AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);  
  132. }    
  133. if (mAppWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {  
  134. finish();  
  135. }    
  136. mAppWidgetPrefix.setText(loadTitlePref(ExampleAppWidgetConfigure.this, mAppWidgetId));  
  137. }    
  138. View.OnClickListener mOnClickListener = new View.OnClickListener() {  
  139. public void onClick(View v) {  
  140. final Context context = ExampleAppWidgetConfigure.this;    
  141. String titlePrefix = mAppWidgetPrefix.getText().toString();  
  142. saveTitlePref(context, mAppWidgetId, titlePrefix);    
  143. AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);  
  144. ExampleAppWidgetProvider.updateAppWidget(context, appWidgetManager,  
  145. mAppWidgetId, titlePrefix);    
  146. Intent resultValue = new Intent();  
  147. resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);  
  148. setResult(RESULT_OK, resultValue);  
  149. finish();  
  150. }  
  151. };    
  152. static void saveTitlePref(Context context, int appWidgetId, String text) {  
  153. SharedPreferences.Editor prefs = context.getSharedPreferences(PREFS_NAME, 0).edit();  
  154. prefs.putString(PREF_PREFIX_KEY + appWidgetId, text);  
  155. prefs.commit();  
  156. }    
  157.  
  158. static String loadTitlePref(Context context, int appWidgetId) {  
  159. SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, 0);  
  160. String prefix = prefs.getString(PREF_PREFIX_KEY + appWidgetId, null);  
  161. if (prefix != null) {  
  162. return prefix;  
  163. } else {  
  164. return context.getString(R.string.appwidget_prefix_default);  
  165. }  
  166. }    
  167. static void deleteTitlePref(Context context, int appWidgetId) {  
  168. }    
  169. static void loadAllTitlePrefs(Context context, ArrayList appWidgetIds,  
  170. ArrayList texts) {  
  171. }  
  172. }  

小結(jié):Android Widget實(shí)例代碼解析的內(nèi)容介紹完了,希望通過Android Widget實(shí)例內(nèi)容的學(xué)習(xí)能對(duì)你有所幫助。

責(zé)任編輯:zhaolei 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-09-07 17:54:40

Android Wid開發(fā)

2011-09-09 13:23:17

Widget

2011-09-09 10:00:20

Android Wid開發(fā)

2011-02-28 13:04:27

RelativeLayAndroid Wid

2011-09-07 13:42:36

Android Wid實(shí)例

2011-09-08 13:11:07

Android Wid實(shí)例

2011-09-08 15:40:45

Android Wid組件

2011-09-07 14:39:47

Android Wid設(shè)計(jì)

2011-09-07 13:30:48

Android WidTabWidget

2011-09-08 14:01:01

Android Wid實(shí)例

2011-09-07 14:25:53

Android Wid設(shè)計(jì)

2011-09-07 14:34:55

Android Wid控件

2011-09-09 17:59:26

QT Widget

2011-09-08 13:36:26

Android Wid播放器

2010-07-13 09:08:27

Widget開發(fā)

2011-09-08 14:21:37

jQueryWidget

2011-09-09 19:23:52

Widget

2011-09-08 16:17:45

Widget

2013-02-20 15:29:00

JSONAndroid開發(fā)

2011-09-08 13:41:53

Widget
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩视频一区二区在线 | 免费在线视频精品 | 亚洲不卡在线观看 | 在线一区二区三区 | 欧美一级全黄 | 91热在线| 国产美女永久免费无遮挡 | 亚洲夜夜爽 | 免费午夜视频在线观看 | 精品久久九 | 国产一区二 | 免费一区二区三区 | 自拍第1页| 日本精品视频一区二区三区四区 | 亚洲人成人一区二区在线观看 | 亚洲欧洲精品成人久久奇米网 | av片在线免费看 | 国产一区二区三区 | 视频一区 亚洲 | 国产精品久久久久久久久久 | 视频二区国产 | 精品一区二区三区91 | 一区二区在线视频 | 日本欧美在线视频 | 在线成人 | 午夜精品久久久久久久久久久久久 | 国产精品免费一区二区三区 | 亚洲欧美国产毛片在线 | 亚洲第一免费播放区 | 亚洲欧美视频 | 欧美一区二区视频 | 草b视频| 成人天堂 | 精品国产视频 | 午夜视频一区二区三区 | 中文字幕视频网 | 99热在线免费 | 国产农村妇女毛片精品久久麻豆 | 日韩精品在线观看免费 | 99在线免费观看视频 | 天天拍天天操 |