【Android】開發桌面小插件(一)

轉載自:http://www.eoeandroid.com/thread-71208-1-1.html


       應用程序窗口小部件App Widgets
  應用程序窗口小部件(Widget)是微小的應用程序視圖,可以被嵌入到其它應用程序中(比如桌面)並接收週期性的更新。你可以通過一個App Widget provider來發佈一個Widget。可以容納其它App Widget的應用程序組件被稱爲App Widget宿主。

  基礎知識The Basics

  爲了創建一個App Widget,你需要下面這些:

  AppWidgetProviderInfo 對象

  描述一個App Widget元數據,比如App Widget的佈局,更新頻率,以及AppWidgetProvider 類。這應該在XML裏定義。

  AppWidgetProvider 類的實現

  定義基本方法以允許你編程來和App Widget連接,這基於廣播事件。通過它,當這個App Widget被更新,啓用,禁用和刪除的時候,你都將接收到廣播通知。

  視圖佈局
  爲這個App Widget定義初始佈局,在XML中。
  另外,你可以實現一個App Widget配置活動。這是一個可選的活動Activity,當用戶添加App Widget時加載並允許他在創建時來修改App Widget的設置。

  下面的章節描述瞭如何建立這些組件:
  在清單中聲明一個應用小部件
  首先,在應用程序AndroidManifest.xml文件中聲明AppWidgetProvider 類,比如:

Java代碼:

< receiver android:name="ExampleAppWidgetProvider" >
< 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 < src="http://hi.images.csdn.net/js/blog/tiny_mce/themes/advanced/langs/zh.js" type="text/javascript"> < srcsrc="http://hi.images.csdn.net/js/blog/tiny_mce/plugins/syntaxhl/langs/zh.js" type="text/javascript"> " />

< /receiver>

      < receiver>元素需要android:name屬性,它指定了App Widget使用的AppWidgetProvider 。

  < intent-filter> 元素必須包括一個含有android:name屬性的< action>元素。該元素指定AppWidgetProvider接受 ACTION_APPWIDGET_UPDATE 廣播。這是唯一你必須顯式聲明的廣播。當需要的時候,AppWidgetManager 會自動發送所有其他App Widget廣播給AppWidgetProvider。

       < meta-data> 元素指定了AppWidgetProviderInfo 資源並需要以下屬性:
  
       android:name ? 指定元數據名稱。
  android:resource ? 指定AppWidgetProviderInfo 資源路徑。

  增加AppWidgetProviderInfo元數據
  AppWidgetProviderInfo定義一個App Widget的基本特性,比如最小布局尺寸,初始佈局資源,刷新頻率,以及(可選的)創建時加載的一個配置活動。使用單獨的一個< appwidget-provider>元素在XML資源裏定義AppWidgetProviderInfo 對象並保存到項目的res/xml/目錄下。

Java代碼:

< appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
android:minWidth="294dp" 
android:minHeight="72dp"
android:updatePeriodMillis="86400000" 
android:initialLayout="@layout/example_appwidget"
android:configure="com.example.android.ExampleAppWidgetConfigure" >
< /appwidget-provider>

       下面是< appwidget-provider>屬性的總結:

  minWidth 和minHeight 屬性的值指定了這個App Widget佈局需要的最小區域。
  缺省的App Widgets所在窗口的桌面位置基於有確切高度和寬度的單元網格。如果App Widget的最小長寬和這些網格單元的尺寸不匹配,那麼這個App Widget將收縮到最接近的單元尺寸。(參見App Widget Design Guidelines 以獲取更多關於桌面單元尺寸的信息)

  因爲桌面佈局方向(由此,單元的尺寸)可以變化,按照拇指規則,你應該假設最壞情況單元尺寸是74像素高和寬。不過,你必須從最後的尺寸中減去2以把像素計算過程中產生的任何的整數舍入誤差考慮在內。要找到像素密度無關的最小寬度和高度,使用這個公式:
  (number of cells * 74) - 2

       遵循這個公式,你應該使用72dp爲每一個單元高度,294dp爲四個單元寬度。

       updatePerdiodMillis 屬性定義了App Widget框架調用onUpdate()方法來從AppWidgetProvider請求一次更新的頻度。實際更新時間並不那麼精確,而且我們建議更新頻率越低越好-也許每小時不超過一次以節省電源。你也許還會允許用戶在配置中調整這個頻率-一些人可能想每15分鐘一次股票報價,或者一天只要四次。

  initialLayout屬性指向定義App Widget佈局的資源。

  configure屬性定義了Activity ,當用戶添加App Widget時啓動,以爲他或她配置App Widget特性。這是可選的(閱讀下面的Creating an App Widget Configuration Activity)。

  參見AppWidgetProviderInfo 類以獲取更多可以被< appwidget-provider>元素接受的屬性信息。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章