1.Widget觀念
widget就是在Home Screen顯示的元件,它只是View的一種,所以可以使用xml來設計layout。你可以設計一個在背景執行的Service,讓它定時去Update這個Widget。此外畫面的設計可以參考Dev手冊中的說明,尺寸的設計則有一個公式最小尺寸(dip) = (格子數 * 74) - 2。所謂的格子是指,Home Screen中劃分成4*4的格子,所以你的widget要佔滿幾個格子,就可以用這個公式去算出你的widget的尺寸,例如,要佔滿2格,就是(2*74)-2=146dip。

2.開發流程

  1. AppWidgetProviderInfo:描述App Widget的metadata。
  2. 實作AppWidgetProvider:接收並處理廣播事件,例如OnUpdate()。
  3. View Layout:設計widget所要呈現的UI。
  4. Configuration Activity:非必要。
  5. 設定AndroidManifest檔。

2.1 AppWidgetProviderInfo
/res下增加一個xml目錄。然後增加一個xml檔,Eclipse中的做法:在xml目錄上按右鍵→New→Android XML File→選擇"AppWidget Provider"→打入檔名。

AppWidgetProviderInfo XML檔的目的,是要描述這個Widget的尺寸、更新的頻率、Layout及非必要的Configuration Activity設定。

請設定其寬及高的尺寸(依之前介紹的公式),然後你必須新增一個Layout用的xml,放在/layout目錄中,並在此設定選擇這個Layout檔。更新頻率是以毫秒計,所以1000表示1秒更新一次。手冊上是建議不要太頻繁,以免太耗電。

2.2實作AppWidgetProvider
新增一個類別,並繼承AppWidgetProvider,然後覆寫onUpdate()方法。通常會在其中啟動Service來做想要做的事。這裡要知道兩個類別:AppWidgetManager及RemoteViews。

RemoteViews是用來更新widget的顯示畫面,例如:RemoteViews有一個setTextViewText()的方法,可以設定Widget中的TextView。它會傳入widget中的TextView的Id,及要顯示的字串,等同於呼叫那個Vidw的setText()方法,來設定文字。

AppWidgetManager則是用來把你的AppWidgetProvider和RemoteViews做連結。

2.3View Layout
設計widget所要呈現的UI,在2.1中被指定。

2.4Configuration Activity
這是非必要的。如果你希望使用者在加入Widget到Home Screen之前要先做一些設定的話,可以增加一個Activity來執行,它會在widget加入到Home Screen之前先跳出來。

2.5設定AndroidManifest檔
因為AppWidgetProvider類別是BroadcastReceiver的子類別,所以在<application>元素內增加一個<receiver>指定到2.2所建的自定AppWidgetProvider。在其中增加一個Intent filter來抓取"android.appwidget.action.APPWIDGET_UPDATE"的Action。

在<receiver>下再新增一個<meta-data>名為"android.appwidget.provider",resource則是設定為/xml目錄下的AppWidgetProviderInfo XML檔。

接著,不要忘記為你的Service或Activity做設定。

結語
以上是整個Widget的開發流程中要注意的事項,如果搭配一個"飯粒",想必你就能瞭解。下面的參考資料中有個"How to ......"的連結,裡面有個Widget教學,你可以去下載它的範例,另外,Android SDK中的API Demo中也有。

參考資料:

轉貼自:http://tonycube.blogspot.com/2009/12/android-widget.html

 

狼翔月影 發表在 痞客邦 PIXNET 留言(0) 人氣()