《Android移動(dòng)應(yīng)用開(kāi)發(fā)》使用App Widgets創(chuàng)建桌面應(yīng)用_第1頁(yè)
《Android移動(dòng)應(yīng)用開(kāi)發(fā)》使用App Widgets創(chuàng)建桌面應(yīng)用_第2頁(yè)
《Android移動(dòng)應(yīng)用開(kāi)發(fā)》使用App Widgets創(chuàng)建桌面應(yīng)用_第3頁(yè)
《Android移動(dòng)應(yīng)用開(kāi)發(fā)》使用App Widgets創(chuàng)建桌面應(yīng)用_第4頁(yè)
《Android移動(dòng)應(yīng)用開(kāi)發(fā)》使用App Widgets創(chuàng)建桌面應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩18頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

AppWidgets2023/9/28132023/9/28設(shè)計(jì)簡(jiǎn)單的桌面組件配置和管理桌面組件目錄CONTENT12設(shè)計(jì)集合桌面組件3參考教材:《Android應(yīng)用開(kāi)發(fā)項(xiàng)目化教程》設(shè)計(jì)簡(jiǎn)單的桌面組件認(rèn)識(shí)AppWidgets微型桌面應(yīng)用程序(AppWidgets)是一個(gè)可以嵌入到其他應(yīng)用程序(如主屏幕),并能定期更新其視圖的桌面小部件。一個(gè)能容納其他AppWidgets的應(yīng)用程序,稱之為AppWidgetsHost。1設(shè)計(jì)簡(jiǎn)單的桌面組件AppWidgets基本組成桌面應(yīng)用的布局桌面應(yīng)用的元數(shù)據(jù)描述桌面應(yīng)用的事件處理1設(shè)計(jì)簡(jiǎn)單的桌面組件RemoteViews布局文件一個(gè)有界限的封裝盒一個(gè)框架圖形控制AppWidgets的布局文件必須在XML文件中定義!1設(shè)計(jì)簡(jiǎn)單的桌面組件RemoteViewsRemoteViews位于android.widget.RemoteViews包是一個(gè)能夠顯示在其他進(jìn)程中的遠(yuǎn)程視圖AppWidgets中的視圖都是通過(guò)RemoteViews表現(xiàn)的傳入布局文件的ID來(lái)獲取布局文件對(duì)應(yīng)的RemoteViews視圖1設(shè)計(jì)簡(jiǎn)單的桌面組件RemoteViews支持布局FrameLayoutLinearLayoutRelativeLayoutGridLayout1支持控件AnalogClockButtonChronometerImageButtonImageViewProgressBarTextViewViewFlipperListViewGridViewStackViewAdapterViewFlipper設(shè)計(jì)簡(jiǎn)單的桌面組件AppWidgetProviderInfo特點(diǎn)用于定義AppWidgets的基本屬性。AppWidgetProviderInfo在res/xml目錄中定義。AppWidgetProviderInfo的定義必須在一個(gè)只有單一的<appwidget-provider>元素的XML資源文件中進(jìn)行。1設(shè)計(jì)簡(jiǎn)單的桌面組件AppWidgetProviderInfo重要屬性minWidth和minHeight:AppWidgets在屏幕上至少要占用多大的空間。updatePeriodMillis:AppWidgets框架請(qǐng)求AppWidgetProvider的onUpdate()方法來(lái)更新AppWidgets的頻率。initialLayout:設(shè)置AppWidgets的布局文件。configure:在AppWidgets在被添加到AppWidgetsHost時(shí),哪個(gè)ConfigureActivity將首先啟動(dòng)。previewImage:指明AppWidgets的預(yù)覽圖片。resizeMode:AppWidgets重新調(diào)整大小的規(guī)則。icon:在AppWidgets列表中顯示的圖標(biāo)。label:在AppWidgets列表中顯示的名字。1設(shè)計(jì)簡(jiǎn)單的桌面組件AppWidgetProvider特點(diǎn)繼承于BroadcastReceiver對(duì)AppWidgets的廣播進(jìn)行了簡(jiǎn)單分類,并封裝了處理的統(tǒng)一接口,通過(guò)這些方法可以很方便和AppWidgets進(jìn)行交互。當(dāng)AppWidgets進(jìn)行更新、啟用、禁用和刪除時(shí),在AppWidgetProvider中,將收到其對(duì)應(yīng)的廣播,并調(diào)用相應(yīng)的回調(diào)方法進(jìn)行處理。AppWidgetProvider只接受和AppWidgets相關(guān)的廣播。1設(shè)計(jì)簡(jiǎn)單的桌面組件AppWidgetProvider示例1設(shè)計(jì)簡(jiǎn)單的桌面組件聲明App

Widgets方法在AndroidManifest.xml文件中聲明該AppWidgetProvider類<receiver>元素的android:name屬性必須要進(jìn)行設(shè)置,該屬性說(shuō)明了將使用哪個(gè)AppWidgetProvider來(lái)提供AppWidgets。<intent-filter>元素必須包含android:name屬性為"android.appwidget.action.APPWIDGET_UPDATE"的Action。1配置和管理桌面組件ConfigurationActivity作用通過(guò)該Acitivity,在AppWidgets被創(chuàng)建時(shí)做一些對(duì)AppWidgets的設(shè)置。這里的設(shè)置是指和AppWidgets的事務(wù)相關(guān)的設(shè)置,不是設(shè)置AppWidgetProviderInfo的內(nèi)容。AppWidgetsHost通過(guò)Action為ACTION_APPWIDGET_CONFIGURE的Intent來(lái)啟動(dòng)ConfigurationActivity,所以ConfigurationActivity必須要能接收該Action。2配置和管理桌面組件ConfigurationActivity注意通過(guò)AppWidgetsHost調(diào)用ConfigurationActivity時(shí),應(yīng)該總是能返回一個(gè)執(zhí)行結(jié)果。返回結(jié)果應(yīng)該包含通過(guò)Intent傳給ConfigurationActivity的要添加的AppWidgets的ID(該ID通過(guò)EXTRA_APPWIDGET_ID保存在Intent的extras中)。如果AppWidgets有ConfigurationActivity,那么當(dāng)AppWidgets被創(chuàng)建時(shí),AppWidgetProvider的onUpdate()方法將不會(huì)被調(diào)用。當(dāng)AppWidgets被創(chuàng)建的時(shí)候,ConfigurationActivity必須負(fù)責(zé)請(qǐng)求AppWidgetManager對(duì)AppWidgets進(jìn)行首次更新。然而以后只要更新時(shí)間到了,系統(tǒng)還是會(huì)發(fā)送ACTION_APPWIDGET_UPDATE廣播,因此AppWidgets的onUpdate()方法還是會(huì)被調(diào)用,以進(jìn)行AppWidgets更新。系統(tǒng)只是在AppWidgets被創(chuàng)建的時(shí)候,不發(fā)送ACTION_APPWIDGET_UPDATE廣播。2配置和管理桌面組件ConfigurationActivity處理AppWidgets基本步驟①在啟動(dòng)ConfigurationActivity的Intent中得到AppWidgets的ID。②進(jìn)行AppWidgets配置的處理。③當(dāng)AppWidgets的配置事務(wù)被處理完后,調(diào)用AppWidgetManager.getInstance(context)來(lái)得到AppWidgetManager的一個(gè)實(shí)例。④調(diào)用updateAppWidget(int,RemoteViews)方法,通過(guò)RemoteViews對(duì)象來(lái)更新AppWidgets。⑤把執(zhí)行結(jié)果放在Intent的附加數(shù)據(jù)中并通過(guò)Intent返回結(jié)果,結(jié)束ConfigurationActivity。2配置和管理桌面組件AppWidgetManager作用AppWidgetManager是Android平臺(tái)上AppWidgets的管理類,一般通過(guò)getInstance()方法獲取一個(gè)實(shí)例。AppWidgetManager提供的一些方法可以綁定AppWidgets、通過(guò)Provider名稱獲取對(duì)應(yīng)的ID以及獲取一個(gè)AppWidgetsProvider信息等,并向AppwidgetProvider發(fā)送通知。2配置和管理桌面組件AppWidgetManager主要方法bindAppWidgetId(intappWidgetId,ComponentNameprovider)

通過(guò)給定的ComponentName綁定appWidgetId。getAppWidgetIds(ComponentNameprovider) 通過(guò)給定的ComponentName獲取AppWidgetId。getAppWidgetInfo(intappWidgetId) 通過(guò)AppWidgetId獲取AppWidget信息。getInstalledProviders() 返回一個(gè)List<AppWidgetProviderInfo>的信息。getInstance(Contextcontext) 獲取AppWidgetManger實(shí)例使用的上下文對(duì)象。2設(shè)計(jì)集合桌面組件CollectionViews包括ListViewGridViewStackViewAdapterViewFlipper 集合AppWidgets通過(guò)RemoteViewsService提供的RemoteViewsFactory來(lái)顯示遠(yuǎn)程的數(shù)據(jù)集。3設(shè)計(jì)集合桌面組件RemoteViewsService作用RemoteViewsService是一個(gè)管理RemoteViews的Service,遠(yuǎn)程的適配器可以通過(guò)它請(qǐng)求并獲得RemoteViews對(duì)象。3設(shè)計(jì)集合桌面組件RemoteViewsServiceRemoteViewsService更新CollectionViews的一般步驟如下①通過(guò)setRemoteAdapter來(lái)設(shè)置RemoteViews對(duì)應(yīng)RemoteViewsService。②在RemoteViewsService中,實(shí)現(xiàn)RemoteViewsFactory接口。然后,在RemoteViewsFactory接口中對(duì)CollectionViews的各個(gè)子項(xiàng)進(jìn)行設(shè)置。3設(shè)計(jì)集合桌面組件RemoteViewsFactory作用RemoteViewsFactory是RemoteViewsService中的一個(gè)接口。RemoteViewsFactory為CollectionViews與其數(shù)據(jù)提供了適配接口。RemoteViewsFactory中的數(shù)據(jù)可以是數(shù)組,也可以是來(lái)自于ContentProvider數(shù)據(jù)庫(kù)。在RemoteViewsFactory中,主要負(fù)責(zé)為數(shù)據(jù)集的每個(gè)數(shù)據(jù)項(xiàng)提供一個(gè)RemoteViews對(duì)象。實(shí)現(xiàn)RemoteViewsService的主要工作集中在RemoteViewsFactory中。3設(shè)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論