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

正文內(nèi)容

計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè)畢業(yè)論文--android平臺(tái)天氣預(yù)報(bào)widget的設(shè)計(jì)與實(shí)現(xiàn)-wenkub

2022-11-19 01:41:15 本頁(yè)面
 

【正文】 以往阻礙移動(dòng)產(chǎn)業(yè) 創(chuàng)新 的專(zhuān)有權(quán)障礙。 Android 中的 Widget 是 Android 以后加入的一個(gè)特性,允許程序顯示一些常用而又重要的信息在用戶(hù)的 Home screen(桌面主屏 )上。本文在第二章介紹 Android 開(kāi)發(fā)環(huán)境的搭建,在第三章介紹 Andoid 開(kāi)發(fā)基礎(chǔ)知識(shí),第四章介紹天氣預(yù)報(bào)桌面小程序的設(shè)計(jì)與實(shí)現(xiàn),最后一章介紹在軟件設(shè)計(jì)過(guò)程中遇到的難題和相應(yīng)解決方案。 2)Eclipse 集成開(kāi)發(fā)環(huán)境,官方提供的 Android 開(kāi)發(fā)插件 ADT Plugin 是基于 Eclipse 編寫(xiě)的,當(dāng)然用戶(hù)可以使用 NetBean、 JBuilder 當(dāng)作代碼編輯器使用,但目前沒(méi)有完整的調(diào)試集成。安裝 Eclipse ADT Plugin,選擇【 Help】 【 Soft Updates】 【 Find and Install?】 選擇“ Available Software”標(biāo)簽頁(yè),點(diǎn)擊【 Add Site?】按鍵。 為了在 DOS 控制臺(tái)中直接使用 SDK 的工具,可以將 SDK 的目錄添加 5 到 Windows 的 path 環(huán)境變量中:在桌面上右擊“我的電腦”,依次點(diǎn)擊【屬性】 【高級(jí)】 【環(huán)境變量】。 ( 2) 點(diǎn)擊左邊的 Virtual Devices選項(xiàng) ,在點(diǎn)擊右邊的 New...按鈕,來(lái)新建一個(gè) AVD。 開(kāi)發(fā)工具 Eclipse介紹 Eclipse 是一種可擴(kuò)展的開(kāi)放源代碼 IDE。 Eclipse 允許在同一 IDE 中集成來(lái)自不同供應(yīng)商的工具,并實(shí)現(xiàn)了工具之間的互操作性,從而顯著改變了項(xiàng)目工作流程,使開(kāi)發(fā)者可以專(zhuān)注在實(shí)際的嵌入式目標(biāo)上。任何 Eclipse 插件定義的擴(kuò)展點(diǎn)都能夠被其它插件使用,反之,任何 Eclipse 插件也可以遵從其它插件定義的擴(kuò)展點(diǎn)。事實(shí)上,由于 Eclipse 并不了解開(kāi)發(fā)語(yǔ)言,所以無(wú)論 Java 語(yǔ)言調(diào)試器、 C/C++調(diào)試器還是匯編調(diào)試器 都是有效的,并可以在相同的框架內(nèi)同時(shí)瞄準(zhǔn) 不同的進(jìn)程或節(jié)點(diǎn)。缺點(diǎn)就是較復(fù)雜,對(duì)初學(xué)者 9 來(lái)說(shuō),理解起來(lái)比較困難。 Android 的應(yīng)用程序目前以 Java 語(yǔ)言編寫(xiě)。 應(yīng)用程序框架 普通的開(kāi)發(fā)者可以使用 Android 核心應(yīng)用程序的系統(tǒng) API。這些 UI 組件包括列表、文本框、按鈕等。 三. Resource Manager。它能讓程序的將自己的警示信息顯示在狀態(tài)欄上。在 Android 應(yīng)用中,一個(gè)應(yīng)用一般都是多個(gè)頁(yè)面組成,而每個(gè)頁(yè)面的單位就是 Activity。 Android應(yīng)用程序由以下 4 個(gè)模塊構(gòu)造而成: Activity Broadcast Intent Receiver Service Content Provider 當(dāng)然,也不是每個(gè) Android 應(yīng)用程序都必須由這 4 部分組成,它可以根據(jù)開(kāi)發(fā)者需求來(lái)進(jìn)行組合 。每一個(gè)活動(dòng)都被實(shí)現(xiàn)為一個(gè)獨(dú)立的類(lèi),并且從活動(dòng)基類(lèi)中繼承而來(lái),活動(dòng)類(lèi)將會(huì)顯示由視圖控件組成的用戶(hù)接口,并對(duì)事件作出響應(yīng)。用戶(hù)可以返回到歷史棧中的前一個(gè)屏幕,當(dāng)屏幕不再使用時(shí),還可以從歷史棧中刪除。例如,當(dāng)電話呼入這個(gè)外部時(shí)間到來(lái)的時(shí)候,可以利用 BroadcastReceiver 進(jìn)行處理。只要是注冊(cè)了,當(dāng)時(shí)間來(lái)臨的時(shí)候,即使程序沒(méi)有啟動(dòng),系統(tǒng)也在需要的時(shí)候啟動(dòng)程序。然而,音樂(lè)重放這個(gè)功能并沒(méi)有對(duì)應(yīng)的 activity,因?yàn)槭褂谜邥?huì)認(rèn)為在導(dǎo)航到其他屏幕時(shí)音樂(lè)應(yīng)該還在播放。當(dāng)連接到一 個(gè) service 之后,還可用 service 提供的接口與它進(jìn)行通訊。外界根本看不到,也不用看到這個(gè)應(yīng)用暴露的數(shù)據(jù)在應(yīng)用當(dāng)中是如何存儲(chǔ)的,即用數(shù)據(jù)庫(kù)存儲(chǔ)還是文件存儲(chǔ),還是通過(guò)網(wǎng)上 15 獲得,這一切都不重要,重要的是外界可以通過(guò)這一套標(biāo)準(zhǔn)而統(tǒng)一的接口和程序里面的數(shù)據(jù)打交道。比如,有一個(gè) Activity 希望打開(kāi)網(wǎng)頁(yè)瀏覽器查看某一網(wǎng)頁(yè)的內(nèi)容,那么這個(gè)Activity 只需要發(fā)出 WEB_SEARCH_ACTION 請(qǐng)求給 Android, Android 會(huì)根據(jù) Intent 的請(qǐng)求內(nèi)容,查詢(xún)各組件注冊(cè)時(shí)聲明的 IntentFilter,找到網(wǎng)頁(yè)瀏覽器 Activity 來(lái)瀏覽網(wǎng)頁(yè)。 (2) 要啟動(dòng)一個(gè)新的服務(wù),或者向一個(gè)已有的服務(wù)傳遞新的指令,調(diào)用 16 ()方法或調(diào)用 ()方法將調(diào)用此方法的上下文對(duì)象與 Service 綁定。 Intent 一旦發(fā)出, Android 都會(huì)準(zhǔn)確找到相匹配的一個(gè)或多個(gè) Activity、Service 或 BroadcastReceiver 作為響應(yīng)。對(duì) 17 于沒(méi)有明確指出目標(biāo)組件名稱(chēng)的 Intent,則稱(chēng)之為“隱式 Intent”。比如在某應(yīng)用程序內(nèi),一個(gè) Activity 啟動(dòng)一個(gè) Service。 是在建立項(xiàng)目時(shí)自動(dòng)生成的,這個(gè)文件是只讀模式,不能更改, 文件是定義該項(xiàng)目所有資源的索引文件。使用這部分接口的基本操作主要包括: 向服務(wù)器寫(xiě)數(shù)據(jù) import 。 URLConnection connection = (Proxy_yours)。 // 連接到服務(wù)器 ()。 ()。早期的 Android 曾同時(shí) 21 包括 Commons HttpClient ( .* ) 和 HttpComponents ( .* ),不 過(guò)當(dāng)前版本 () 中開(kāi)發(fā)者只能使用后者,也就是說(shuō)類(lèi)似以下的一些類(lèi): 使用這部分接口的基本操作與 .* 基本類(lèi)似,主要包括: 處理服務(wù)器返回結(jié)果 import 。 import 。 import . HttpClientParams。 (params, 8192)。 是 Commons HttpClient // 中的用法,在 Android 中我們需要使用 Apache 的缺省實(shí)現(xiàn) DefaultHttpClient HttpClient Client = new DefaultHttpClient(params)。 HttpEntity entity = ()。 在 Android 應(yīng)用中,要使用網(wǎng)絡(luò)必須先在 注冊(cè)使用網(wǎng)絡(luò)功能。 通過(guò) openStream()方法獲取 xml 信息,將其作為一個(gè)參數(shù)傳給 xml 解析器進(jìn)行 xml 解析。 SAXParser sp=()。 /*創(chuàng)建我們自己的內(nèi)容處理器 */ ExampleHandler myHander=new ExampleHandler()。 要實(shí)現(xiàn) xml內(nèi)容處理器,需要繼承類(lèi) ,它提供了 startDocument(),endDocument(),startElement(),endElement(), Charators()等方法。 在 xml 文件中,我們常常在開(kāi)始 tag 和結(jié)束 tag 之間放入數(shù)據(jù),當(dāng) 25 SAXParser 解析到中間數(shù)據(jù)時(shí),方法 charactors()就會(huì)被調(diào)用。 Tags if ((forecast_information)) { = true。 // 39。Inner39。Inner39。Inner39。 } else if ((current_conditions)) { = false。由于在桌面上所有組件的大小均以單元格為單位,所以這里我們要對(duì)桌面部件的最小寬度和最小高度進(jìn)行描述,然后當(dāng)桌面部件最終被添加到桌面上時(shí),其大小會(huì)被設(shè)定為最接近的所占單元格數(shù)大小。 AppWidgetProvider 類(lèi)擴(kuò)展 BroadcastReceiver 為一個(gè)簡(jiǎn)便類(lèi)來(lái)處理App Widget 廣播。但是,如果你已經(jīng)聲明了一個(gè)配置活動(dòng),這個(gè)方法在用戶(hù)添加 App Widget 時(shí)將不會(huì)被調(diào)用,而只在后續(xù)更新時(shí)被調(diào)用。 onEnabled(Context) 當(dāng)一個(gè) App Widget 實(shí)例第一次創(chuàng)建時(shí)被調(diào)用。你應(yīng)該在 onDisabled(Context)中做一些清理工作,比如刪除一個(gè)臨時(shí)的數(shù)據(jù)庫(kù)。這個(gè)類(lèi)當(dāng)中還有一個(gè) UpdateService 子類(lèi),繼承自Service。并使用 finish()方法關(guān)閉本頁(yè)面。 String temp=(Data)。 然后使用 RemoteViews 更新 App Widget: RemoteViews updateViews = new RemoteViews(getPackageName(), )。 (,+ () )。 ComponentName thisWidget=new ComponentName(this, )。下面講述這一過(guò)程 點(diǎn)擊“提交 按鈕時(shí)觸 發(fā)以下操作: String city = ((EditText) findViewById()).getText().toString()。 Bundle mBundle = new Bundle()。 finish()。 import 。 剛開(kāi)始使用 widget 時(shí)由于不知道這一點(diǎn),花費(fèi)很長(zhǎng)時(shí)間在檢查代碼上。 RelativeLayout ImageButton 一開(kāi)始在我的設(shè)計(jì)中是想把文本輸入框放在桌面的,但是由于RemoteViews 不支持,所以會(huì)出現(xiàn)以下錯(cuò)誤 于是只能修改設(shè)計(jì),增加一個(gè) Activity。 在 。 RemoteViews 有提供了一種方法可以實(shí)現(xiàn)圖片顯示,但是這種方法要先將圖片導(dǎo)入程序 res 中。 ProgressBar Button FrameLayout 32 我主要重寫(xiě)了以下方法: startDocument() endDocument() startElement() endElement() charactors() 使用這些方法即可完成對(duì) xml 文件的解析。 WeatherHandle類(lèi)的實(shí)現(xiàn) 這個(gè)類(lèi)的功能是使用 sax 解析 xml 首先導(dǎo)入相關(guān)類(lèi): import 。//壓入數(shù)據(jù) (mBundle)。 ()。 (thisWidget, updateViews)。 PendingIntent pIntent=(getApplicationContext() ,0,nIntent,0)。 (, 溫度: + () + 攝氏度 )。 } (new Intent(context,))。 if(()){ Bundle bundle=new Bundle()。 三、 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)信息顯示在用戶(hù)桌面。 源文件組織 源程序包括三個(gè) java 類(lèi): 一、 CurrentWeather 類(lèi),繼承自 AppWidgetProvider 類(lèi) 。如果你需要打開(kāi)一個(gè)新的數(shù)據(jù)庫(kù)或者執(zhí)行其他對(duì)于所有的 App Widget 實(shí)例只需要發(fā)生一次的設(shè)置,那么這里是完成這個(gè)工作的好地方。(參見(jiàn)下面的創(chuàng)建一個(gè) App Widget 配置活動(dòng) Creating an App Widget Configuration Activity。當(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ù))。為了針對(duì)桌面部 件不同的狀態(tài)執(zhí)行不同的操作, AppWidget 框架提供了一個(gè)繼承自 BroadcastReceiver 的 AppWidgetProvider 類(lèi)。 } } 制作 widget應(yīng)用程序 桌面部件 widget 是一種利用 AppWidget 框架將應(yīng)用程序的某個(gè)部件擺放在桌面,以便于用戶(hù)快速了解信息以及操作應(yīng)用程序的桌面組件,如未完成的日歷項(xiàng)、音樂(lè)播放器的播放暫停和當(dāng)前播放音樂(lè)的信息等。 if (
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1