freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

android平臺(tái)天氣預(yù)報(bào)widget的的設(shè)計(jì)和實(shí)現(xiàn)-資料下載頁(yè)

2025-06-29 19:23本頁(yè)面
  

【正文】 if () { //可擴(kuò)展 } else { //可擴(kuò)展 } } } } @Override public void endElement(String namespaceURI, String localName, String qName) throws SAXException { if ((forecast_information)) { = false。 } else if ((current_conditions)) { = false。 } else if ((forecast_conditions)) { = false。 } } 制作 widget 應(yīng)用程序 桌面部件 widget 是一種利用 AppWidget 框架將應(yīng)用程序的某個(gè)部件擺放在桌面,以便于用戶快速了解信息以及操作應(yīng)用程序的桌面組件,如未完成的日歷項(xiàng)、音樂(lè)播放器的播放暫停和當(dāng)前播放音樂(lè)的信息等。 要為應(yīng)用程序定義桌面部件,首先要在應(yīng)用程序項(xiàng)目的 res/xml/目錄下新建一個(gè) XML 文件來(lái)對(duì)桌面部件進(jìn)行描述,其描述的信息包括了桌面部件在桌面上所占的空間、更新的周期時(shí)間以及部件的布局文件。由于在桌面上所有組件的大小均以單元格為單位,所以這里我們要對(duì)桌面部件的最小寬度和最小高度進(jìn)行描述,然后當(dāng)桌面部件最終被添加到桌面上時(shí),其大小會(huì)被設(shè)定為最接近的所占單元格數(shù)大小。下面是一個(gè)桌面部件的寬或高所占單元格數(shù)換算最小尺寸的公式: 最小尺寸= (單元格數(shù)74).2 (單位:dip) AppWidget 框架是通過(guò)接收廣播 Intent 的方式來(lái)對(duì)桌面部件進(jìn)行控制的,所以每個(gè)描述桌面部件的 XML 文件都有一個(gè)對(duì)應(yīng)的廣播接收器。為了針對(duì)桌面部件不同的狀態(tài)執(zhí)行不同的操作,AppWidget 框架提供了一個(gè) 繼承自 BroadcastReceiver 的 AppWidgetProvider 類(lèi)。這樣我們只需要在應(yīng)用程序中創(chuàng)建一個(gè) AppWidgetProvider 的子類(lèi),然后重新實(shí)現(xiàn)不同狀態(tài)下的回調(diào)方法就可以響應(yīng) AppWidget 框架的控制了。 AppWidgetProvider 類(lèi)擴(kuò)展 BroadcastReceiver 為一個(gè)簡(jiǎn)便類(lèi)來(lái)處理App Widget 廣播。AppWidgetProvider 只接收和這個(gè) App Widget 相關(guān)的事件廣播,比如這個(gè) App Widget 被更新,刪除,啟用,以及禁用。當(dāng)這些廣播事件發(fā)生時(shí),AppWidgetProvider 將接收到下面的方法調(diào)用: onUpdate(Context, AppWidgetManager, int[]) 這個(gè)方法調(diào)用來(lái)間隔性的更新 App Widget,間隔時(shí)間用AppWidgetProviderInfo 里的 updatePeriodMillis 屬性定義(參見(jiàn)添加AppWidgetProviderInfo 元數(shù)據(jù)) 。這個(gè)方法也會(huì)在用戶添加 App Widget 時(shí)被調(diào)用,因此它應(yīng)該執(zhí)行基礎(chǔ)的設(shè)置,比如為視圖定義事件處理器并啟動(dòng)一個(gè)臨時(shí)的服務(wù) Service,如果需要的話。但是,如果你已經(jīng)聲明了一個(gè)配置活動(dòng),這個(gè)方法在用戶添加 App Widget 時(shí)將不會(huì)被調(diào)用,而只在后續(xù)更新時(shí)被調(diào)用。配置活動(dòng)應(yīng)該在配置完成時(shí)負(fù)責(zé)執(zhí)行第一次更新。 (參見(jiàn)下面的創(chuàng)建一個(gè) App Widget 配置活動(dòng) Creating an App Widget Configuration Activity。 ) onDeleted(Context, int[]) 當(dāng) App Widget 從宿主中刪除時(shí)被調(diào)用。 onEnabled(Context) 當(dāng)一個(gè) App Widget 實(shí)例第一次創(chuàng)建時(shí)被調(diào)用。比如,如果用戶添加兩個(gè)你的 App Widget 實(shí)例,只在第一次被調(diào)用。如果你需要打開(kāi)一個(gè)新的數(shù)據(jù)庫(kù)或者執(zhí)行其他對(duì)于所有的 App Widget 實(shí)例只需要發(fā)生一次的設(shè) 置,那么這里是完成這個(gè)工作的好地方。 onDisabled(Context) 當(dāng)你的 App Widget 的最后一個(gè)實(shí)例被從宿主中刪除時(shí)被調(diào)用。你應(yīng)該在 onDisabled(Context)中做一些清理工作,比如刪除一個(gè)臨時(shí)的數(shù)據(jù)庫(kù)。 onReceive(Context, Intent) 這個(gè)接收到每個(gè)廣播時(shí)都會(huì)被調(diào)用,而且在上面的回調(diào)函數(shù)之前。 源文件組織 源程序包括三個(gè) java 類(lèi): 一、CurrentWeather 類(lèi),繼承自 AppWidgetProvider 類(lèi) 。使用這個(gè)類(lèi)編程與 App Widget 連接。這個(gè)類(lèi)當(dāng)中還有一個(gè) UpdateService 子類(lèi),繼承自 Service。 二、edit 類(lèi),繼承自 Acitivity,用于用戶修改要進(jìn)行天氣預(yù)報(bào)的城市。 三、WeatherHandler 類(lèi),用于 xml 的解析 下面說(shuō)明各個(gè)類(lèi)功能的實(shí)現(xiàn) 類(lèi)之間的協(xié)作 當(dāng)一個(gè) widget 被添加時(shí),CurrentWeather 類(lèi)會(huì)接收 action 為APPWIDGET_UPDATE 的 Intent,CurrentWeather 會(huì)啟動(dòng)一個(gè) Service,由這個(gè)服務(wù)與網(wǎng)絡(luò)連接,獲取天氣預(yù)報(bào)信息,因?yàn)楂@得的數(shù)據(jù)形式是 xml 的,所以調(diào)用 WeatherHandle 類(lèi)進(jìn)行 xml 解析,根據(jù)解析后的結(jié)果將相關(guān)信息顯示在用戶桌面。當(dāng)用戶想改變城市時(shí),點(diǎn)擊桌面上的按鈕,就會(huì)觸發(fā)綁定在按鈕上的 PendingIntent,喚醒 edit 這個(gè) Activity,edit 類(lèi)獲取用戶輸入 的城市信息后,廣播 Intent 喚醒 CurrentWeather 對(duì) App Widget 進(jìn)行更新。并使用 finish()方法關(guān)閉本頁(yè)面。 CurrentWeather 類(lèi)的實(shí)現(xiàn) 首先定義一個(gè)私有類(lèi)變量來(lái)保存城市信息,初始化為“guangzhou,china” private static String city=“guangzhou,china” ; 重寫(xiě)了 onReceive()方法,如下所示 public void onReceive(Context context,Intent intent) {final String action = ()。if(()){Bundle bundle=new Bundle()。bundle=()。String temp=(Data)。if(temp!=null) {city=temp。}(new Intent(context,))。}} 實(shí)現(xiàn) UpdateService 的功能: 重寫(xiě) onStart()方法: 首先根據(jù)類(lèi)變量 city 的值向網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù),并使用 WeatherHandler類(lèi)解析 xml 得到該城市天氣信息。 然后使用 RemoteViews 更新 App Widget:RemoteViews updateViews = new RemoteViews(getPackageName(), )。(,city)。(,溫度: + () + 攝氏度)。(,())。(,+ () )。Intent nIntent=new Intent(getApplicationContext(),)。PendingIntent pIntent=(getApplicationContext() ,0,nIntent,0)。 (,pIntent)。 ComponentName thisWidget=new ComponentName(this,)。 AppWidgetManager manager = (this)。 (thisWidget, updateViews)。 edit 類(lèi)的實(shí)現(xiàn) edit 類(lèi)是一個(gè) Activity,主要功能是將用戶輸入的城市信息放到 Intent的 extras 中,然后將其廣播出去。下面講述這一過(guò)程 點(diǎn)擊“提交按鈕時(shí)觸發(fā)以下操作: String city = ((EditText) findViewById()).getText().toString()。 Intent intent = new Intent()。 ()。 (, )。 Bundle mBundle = new Bundle()。 (Data, city)。//壓入數(shù)據(jù) (mBundle)。 sendBroadcast(intent)。 finish()。 如此 CurrentWeather 類(lèi)便能獲取到一個(gè)廣播的 Intent,從 Intent 的extras 中提取城市名稱(chēng)并更新 widget。 WeatherHandle 類(lèi)的實(shí)現(xiàn) 這個(gè)類(lèi)的功能是使用 sax 解析 xml 首先導(dǎo)入相關(guān)類(lèi): import 。 import 。 import 。 繼承 DefaultHandler 類(lèi),根據(jù) google api 返回的 xml 數(shù)據(jù)格式進(jìn)行解析。 我主要重寫(xiě)了以下方法: startDocument() endDocument() startElement() endElement() charactors() 使用這些方法即可完成對(duì) xml 文件的解析。 第 5 章 相關(guān)實(shí)現(xiàn)技術(shù)與體會(huì) 本人是首次接觸 android 系統(tǒng)與移動(dòng)平臺(tái)開(kāi)發(fā),在學(xué)習(xí)和開(kāi)發(fā)的過(guò)程中遇到很多大大小小的問(wèn)題,下面是我整理的典型問(wèn)題和解決方案 添加 widget 制作完 widget 之后要在 Android 模擬器中顯示必須要手動(dòng)添加自己制作的 widget。 剛開(kāi)始使用 widget 時(shí)由于不知道這一點(diǎn),花費(fèi)很長(zhǎng)時(shí)間在檢查代碼上。 添加 widget 的過(guò)程如下所示: 點(diǎn)擊 Menu add,出現(xiàn)以下圖面 選擇 Widgets,在彈出來(lái)的對(duì)話中選擇自己的應(yīng)用 RemoteViews 的局限 App Widget 的布局是基于 RemoteViews 的,RemoteViews 主要有以下局限: 一、不支持 findViewById()方法 二、只能使用有限的布局與控件 FrameLayout LinearLayout RelativeLayout AnalogClock Button Chronometer ImageButton ImageView ProgressBar TextView不支持這些類(lèi)的派生。 一開(kāi)始在我的設(shè)計(jì)中是想把文本輸入框放在桌面的,但是由于RemoteViews 不支持,所以會(huì)出現(xiàn)以下錯(cuò)誤 于是只能修改設(shè)計(jì),增加一個(gè) Activity。 在 widget 中顯示圖片 在還為做成 widget 前,軟件可以使用網(wǎng)上的圖片進(jìn)行顯示,但是做成widget 后, RemoteViews 不支持這種方式。 RemoteViews 有提供了一種方法可以實(shí)現(xiàn)圖片顯示,但是這種方法要先將圖片導(dǎo)入程序 res 中。因?yàn)闀r(shí)間問(wèn)題我沒(méi)有在網(wǎng)上尋找 icon 的天氣預(yù)報(bào)圖標(biāo),所以在本次的 widget 設(shè)計(jì)中,沒(méi)有顯示天氣的 icon。 在 中進(jìn)行權(quán)限聲明 AndroidManifest 是一個(gè)相當(dāng)重要的文件,相當(dāng)于一個(gè)注冊(cè)表,Activity,Broadcast,Service 都要在這里進(jìn)行注冊(cè)。之前我使用CurrentWeather 中的 Service 內(nèi)部類(lèi)沒(méi)有忘記進(jìn)行注冊(cè),導(dǎo)致 Service 沒(méi)法 啟動(dòng),程序功能無(wú)法實(shí)現(xiàn),為此花費(fèi)我大量時(shí)間來(lái)檢查代碼。 權(quán)限聲明在智能手機(jī)中是一種比較常見(jiàn)的應(yīng)用程序保護(hù)機(jī)制,Android的基本思想是在 文件中顯示地聲明應(yīng)用程序需要的權(quán)限,防止應(yīng)用程序錯(cuò)誤地使用服務(wù),不恰當(dāng)?shù)卦L問(wèn)資源,最終達(dá)到提高Android 應(yīng)用程序的健壯性,改善用戶體驗(yàn)的目的。 Android 中的每種權(quán)限都用一個(gè)獨(dú)立的標(biāo)簽表示,比如: 。 。 從這些表示權(quán)限的名稱(chēng)中,不難發(fā)現(xiàn)其所代表的含義,如 表示發(fā)送短信的權(quán)限。 Android 系統(tǒng)的每種功能或每種特性都用一個(gè)權(quán)限來(lái)表示,自然如果應(yīng)用程序要訪問(wèn)某種特性就需要對(duì)權(quán)限進(jìn)行聲明。否則,應(yīng)用程序?qū)o(wú)法使用希望的功能,而且不會(huì)有缺少權(quán)限的錯(cuò)誤提示! 為 widget 中的按鈕設(shè)置 Onclick 事件 與普通的控件不
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1