Widgets
Widgets:小工具。
Widget - XML file
要新建一個XML file名稱為mywidget,裡面要加入AppWidgetProvider。
例如:
<appwidget-provider
xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="146dp"
android:updatePeriodMillis="0"
android:minHeight="146dp"
android:initialLayout="@layout/activity_main">
</appwidget-provider>
Widget - Layout file
把元件抓到Layout裡面。
Widget - Java file
定義Layout之後,在Java file 需要AppWidgetProvider類別。
更新方法,需要PendingIntent 和 RemoteViews 類別。
例如:
PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0);
//getActivity()第1個參數是目前應用程式的Context,就是目前應用程式的狀態。第2個參數目前保留不使用。第3個參數即是提供給外部應用程式用來啟動Activity的Intent實體。
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.activity_main);
//
得到RemoteViews,用來控制及設定App Widget的控件,如按鈕等。
最後還需要AppWidgetManager 類別裡面的更新方法updateAppWidget()
例如:
appWidgetManager.updateAppWidget(currentWidgetId,views);
Widget其他方法
onDeleted(Context context, int[] appWidgetIds):當APPWidget被刪除,呼叫此方法。
onDisabled(Context context):當最後APPWidget被禁用,呼叫此方法。
onEnabled(Context context):當 APPWidget被建立,呼叫此方法。
onReceive(Context context, Intent intent)
Widget - Manifest file
記得在Androidmanifest.xml 增加
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/example_appwidget_info" />
參考文獻
Android - Widgets
Android小工具教程
Android Widget Example
Android Widget 開發流程
Android Widget 範例
Android程式設計 (十三) 使用Notification
PendingIntent實現原理和代碼
android基礎知識31:PendingIntent
Android的小工具(App Widget)(RemoteViews)
[Android] RemoteView & AppWidget機制介紹
Jollen 的 Android 教學,#25: HelloAppWidgetProvider.java 程式碼說明