今天小博老師帶大家了解一下Android窗口小部件App Widget。
AppWidget是應(yīng)用程序窗口小部件,是微型的應(yīng)用程序視圖??梢员磺度氲狡渌麘?yīng)用程序中并接收周期性的更新。
AppWidgetProvider繼承自BroadcastReceiver,它能接收widget相關(guān)的廣播,例如widget 的更新、刪除、開啟和禁用等。
AppWidgetProviderInfo描述一個(gè)App Widget元數(shù)據(jù),比如App Widget的布局,更新頻率,以及AppWidgetProvider 類。這個(gè)應(yīng)該在XML里定義。
默認(rèn)情況下(即不設(shè)置android:widgetCategory屬性),Android是將widget添加到 home screen 中。
但在Android 4.2中,若用戶希望 widget 可以被添加到lock screen中,可以通過設(shè)置 widget 的 android:widgetCategory 屬性包含keyguard來完成。
當(dāng)你把widget 添加到lock screen中時(shí),你可能對它進(jìn)行定制化操作,以區(qū)別于添加到home screen中的情況。 你能夠通過 getAppWidgetOptions() 來進(jìn)行判斷 widget 是被添加到lock screen中,還是home screen中。通過 getApplicationOptions() 獲取 Bundle對象,然后讀取 Bundle 的OPTION_APPWIDGET_HOST_CATEGORY值:若值為 WIDGET_CATEGORY_HOME_SCREEN, 則表示該 widget 被添加到home screen中; 若值為 WIDGET_CATEGORY_KEYGUARD,則表示該 widget 被添加到lock screen中。
另外,你應(yīng)該為添加到lock screen中的 widget 單獨(dú)使用一個(gè)layout,可以通過 android:initialKeyguardLayout 來指定。而 widget 添加到home screen中的layout則可以通過 android:initialLayout 來指定。