Android Widget 開發流程。
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。開發流程
- AppWidgetProviderInfo:描述App Widget的metadata。
- 實作AppWidgetProvider:接收並處理廣播事件,例如OnUpdate()。
- View Layout:設計widget所要呈現的UI。
- Configuration Activity:非必要。
- 設定AndroidManifest檔。
AppWidgetProviderInfo
在 /res 下增加一個 xml 目錄。然後增加一個 xml 檔,Eclipse 中的做法:在 xml 目錄上按右鍵→New→Android XML File→選擇"AppWidget Provider"→打入檔名。AppWidgetProviderInfo XML檔的目的,是要描述這個Widget的尺寸、更新的頻率、Layout及非必要的Configuration Activity設定。
請設定其寬及高的尺寸(依之前介紹的公式),然後你必須新增一個Layout用的xml,放在/layout目錄中,並在此設定選擇這個Layout檔。更新頻率是以毫秒計,所以1000表示1秒更新一次。手冊上是建議不要太頻繁,以免太耗電。
實作AppWidgetProvider
新增一個類別,並繼承AppWidgetProvider,然後覆寫onUpdate()方法。通常會在其中啟動Service來做想要做的事。這裡要知道兩個類別:AppWidgetManager及RemoteViews。RemoteViews是用來更新widget的顯示畫面,例如:RemoteViews有一個setTextViewText()的方法,可以設定Widget中的TextView。它會傳入widget中的TextView的Id,及要顯示的字串,等同於呼叫那個Vidw的setText()方法,來設定文字。
AppWidgetManager則是用來把你的AppWidgetProvider和RemoteViews做連結。
View Layout
設計widget所要呈現的UI。Configuration Activity
這是非必要的。如果你希望使用者在加入Widget到Home Screen之前要先做一些設定的話,可以增加一個Activity來執行,它會在widget加入到Home Screen之前先跳出來。設定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做設定。
我要留言
留言小提醒:
1.回覆時間通常在晚上,如果太忙可能要等幾天。
2.請先瀏覽一下其他人的留言,也許有人問過同樣的問題。
3.程式碼請先將它編碼後再貼上。(線上編碼:http://bit.ly/1DL6yog)
4.文字請加上標點符號及斷行,難以閱讀者恕難回覆。
5.感謝您的留言,您的問題也可能幫助到其他有相同問題的人。