2017年3月22日 星期三

Widgets

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 程式碼說明



沒有留言:

張貼留言