国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android開(kāi)發(fā)5:應(yīng)用程序窗口小部件App Widgets的實(shí)現(xiàn)(附demo)

2019-12-12 04:34:59
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

前言

本次主要是實(shí)現(xiàn)一個(gè)Android應(yīng)用,實(shí)現(xiàn)靜態(tài)廣播、動(dòng)態(tài)廣播兩種改變 widget內(nèi)容的方法,即在上篇博文中實(shí)驗(yàn)的基礎(chǔ)上進(jìn)行修改,所以此次實(shí)驗(yàn)的重點(diǎn)是AppWidget小部件的實(shí)現(xiàn)啦~

首先,我們簡(jiǎn)單說(shuō)一下Widget是一個(gè)啥玩意~

應(yīng)用程序窗口小部件(Widget)是微小的應(yīng)用程序視圖,可以被嵌入到其它應(yīng)用程序中(比如桌面)并接收周期性的更新。你可以通過(guò)一個(gè)App Widget provider來(lái)發(fā)布一個(gè)Widget。可以容納其它App Widget的應(yīng)用程序組件被稱為App Widget宿主。

Widget是在桌面上的一塊顯示信息的東西,也通過(guò)單擊Widget跳轉(zhuǎn)到一個(gè)程序里面。而系統(tǒng)自帶的程序,典型的Widget是music,這個(gè)Android內(nèi)置的音樂(lè)播放小程序。這個(gè)是典型的Widget+app應(yīng)用。就是一個(gè)程序既可以通過(guò)Widget啟動(dòng),也可以通過(guò)App啟動(dòng)。Widget就是一個(gè)AppWidgetProvider+一個(gè)UI界面顯示(預(yù)先綁定了好多Intent),界面上的信息可以通過(guò)程序控制而改變,單擊Widget,上的控件只能激發(fā)發(fā)送一個(gè)Intent,或發(fā)出一個(gè)Service的啟動(dòng)通知。而AppWidgetProvider可以攔截這個(gè)Intent,而進(jìn)行相應(yīng)的處理(比如顯示新的信息)。

基礎(chǔ)知識(shí)

為了創(chuàng)建一個(gè)App Widget,你需要下面這些:

AppWidgetProviderInfo 對(duì)象

描述一個(gè)App Widget元數(shù)據(jù),比如App Widget的布局,更新頻率,以及AppWidgetProvider 類。這應(yīng)該在XML里定義。

AppWidgetProvider 類的實(shí)現(xiàn)

定義基本方法以允許你編程來(lái)和App Widget連接,這基于廣播事件。通過(guò)它,當(dāng)這個(gè)App Widget被更新,啟用,禁用和刪除的時(shí)候,你都將接收到廣播通知。

視圖布局

為這個(gè)App Widget定義初始布局,在XML中。

另外,你可以實(shí)現(xiàn)一個(gè)App Widget配置活動(dòng)。這是一個(gè)可選的活動(dòng)Activity,當(dāng)用戶添加App Widget時(shí)加載并允許他在創(chuàng)建時(shí)來(lái)修改App Widget的設(shè)置。

widget 的添加:長(zhǎng)按菜單鍵,點(diǎn)擊 widgets 選項(xiàng)。找到對(duì)應(yīng)的 widget 將其拖入桌面。對(duì) 于不同的 API 版本顯示會(huì)稍有不同。

  

典型的 Android Widget 有三個(gè)主要組件,一個(gè)邊框、一個(gè)框架和圖形控件以及其他元素。 在 Android Studio 中創(chuàng)建 Widget 類后,會(huì)直接生成相關(guān)文件。

首先,在應(yīng)用程序AndroidManifest.xml文件中聲明AppWidgetProvider 類,比如:

<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" /></receiver>

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

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

<meta-data> 元素指定了AppWidgetProviderInfo 資源并需要以下屬性: