對(duì)Android手機(jī)進(jìn)行全解析
隨第一款Android手機(jī)的發(fā)布后,Android用戶就開(kāi)始嘗試編寫各種應(yīng)用Widget(小工具)了。隨著Widget API的公開(kāi),為開(kāi)發(fā)人員帶來(lái)了全新有趣的開(kāi)發(fā)模式,除了傳統(tǒng)的電話應(yīng)用外,還可以做其它方面的應(yīng)用開(kāi)發(fā)。
開(kāi)發(fā)人員可以使用Widget API(包含在Android手機(jī)中,最新版本已經(jīng)到Android 2.0了)創(chuàng)建簡(jiǎn)單的控件,然后在新的Widget中顯示和使用這些控件。本文向你介紹如何從零開(kāi)始創(chuàng)建一個(gè)主屏幕應(yīng)用Widget。
通過(guò)使用AlarmManager接口,以用戶設(shè)定的時(shí)間間隔更新圖片。你將看到如何創(chuàng)建一個(gè)Widget,以及如何隨機(jī)地從一組圖片中選擇一張圖片顯示,根據(jù)用戶設(shè)定的時(shí)間間隔周期性改變顯示的圖片。
創(chuàng)建一個(gè)簡(jiǎn)單的Widget包括以下幾個(gè)步驟:
1、創(chuàng)建一個(gè)RemoteView,由它為Widget提供用戶界面;
2、將RemoteView綁定一個(gè)Activity(行為)實(shí)現(xiàn)AppWidgetProvider接口;
3、在Android手機(jī) manifest配置文件中提供Widget的關(guān)鍵配置信息。
項(xiàng)目準(zhǔn)備一個(gè)Widget就是一個(gè)處理特定行為的BroadcastReceiver,AppWidgetProvider接口為開(kāi)發(fā)人員提供了一個(gè)框架來(lái)簡(jiǎn)化處理這些行為,它包括以下方法:
1、onEnabled():創(chuàng)建第一個(gè)Widget時(shí)調(diào)用,如果可以,應(yīng)在這里進(jìn)行全局初始化。
2、onDisabled():它和onEnabled()相反,創(chuàng)建最后一個(gè)Widget時(shí)才調(diào)用它,如果可以,應(yīng)在這里進(jìn)行全局清理。
3、onUpdate():當(dāng)Widget需要更新它的View時(shí)調(diào)用,用戶第一次創(chuàng)建Widget時(shí)也需要調(diào)用它。
4、onDeleted():當(dāng)Widget的一個(gè)特定實(shí)例被刪除時(shí)調(diào)用,清理特定實(shí)例應(yīng)放在這里進(jìn)行。
5、onReceive():此方法默認(rèn)情況下處理BroadcastReceiver行為,并調(diào)用上面的方法(警告:根據(jù)相關(guān)文檔記載,需要開(kāi)發(fā)人員自己處理某些特殊情況,更多信息請(qǐng)看下面的說(shuō)明)。
你可能已經(jīng)注意到,和常見(jiàn)的定義不一樣,小節(jié)引用了一個(gè)XML文件資源,這個(gè)文件為Widget定義了額外的數(shù)據(jù)。與AppWidgetProviderInfo類一致,這里定義的信息是不變的,因此這個(gè)例子不包括updatePeriodMillis的值。
因?yàn)檫@個(gè)程序允許用戶修改與更新時(shí)間,如果你在這里分配updatePeriodMillis,它就不能這樣做。下面是imageswidget_info.xml文件的完整代碼:
- 1 <receiver android:name="ImagesWidgetProvider">
- 2 <intent-filter>
- 3 <action
- 4 android:name="android.appwidget.action.APPWIDGET_UPDATE" />
- 5 </intent-filter>
- 6 <meta-data
- 7 android:name="android.appwidget.provider"
- 8 android:resource="@xml/imageswidget_info" />
- 9 </receiver>
- 10
【編輯推薦】