版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
項(xiàng)目五健康助手學(xué)習(xí)目標(biāo)通過U酒保項(xiàng)目健康助手模塊的實(shí)現(xiàn),學(xué)習(xí)折線圖的構(gòu)建方法,了解圖片下沉動畫的使用方法,掌握如何使用AsyncTask類實(shí)現(xiàn)更新UI,在任務(wù)實(shí)現(xiàn)過程中:了解ViewGroup和View區(qū)別掌握自定義控件的使用掌握自定義動畫的使用掌握AsyncTask類的使用任務(wù)路徑情景導(dǎo)入U(xiǎn)酒保研發(fā)團(tuán)隊(duì)根據(jù)用戶的需求設(shè)計(jì)并開發(fā)了酒精數(shù)據(jù)統(tǒng)計(jì)功能,可將歷史酒精濃度值以折線圖的方式展示,方便用戶再次使用時(shí)進(jìn)行查詢比對。該軟件還設(shè)有娛樂模塊、微博模塊、笑話模塊用來豐富業(yè)余生活。本項(xiàng)目通過數(shù)據(jù)監(jiān)測模塊的實(shí)現(xiàn),講解了折線圖以及自定義控件的使用方法。自定義組件Android中所有的UI類都以View和ViewGroup為基礎(chǔ)
。其中View是與用戶交互控件的父類,在項(xiàng)目開發(fā)過程中,具有重要作用,主要用于在界面中獲取矩形區(qū)域,完整的實(shí)現(xiàn)自定義組件。ViewGroup是存放View的容器,主要用于管理其包含的View控件。View類中提供了多種方法用來構(gòu)建自定義組件。
自定義組件簡介View定義了完整的繪圖基本操作,用于自定義組件的構(gòu)建,在構(gòu)建過程中,需重寫onMeasure()、onLayout()、onDraw()方法。onMeasure()的用法。繪制View前使用onMeasure()調(diào)用setMeasuredDimension()方法對其進(jìn)行測量。onLayout()的用法。onLayout()主要根據(jù)View在Measure()中測量的大小決定其擺放位置。自定義組件方法自定義組件onDraw()的用法。Canvas為系統(tǒng)提供一塊內(nèi)存區(qū)域,所有繪制都在該內(nèi)存中進(jìn)行,繪制完成后系統(tǒng)將布局顯示到屏幕中。該Canvas對象提供各種繪制點(diǎn)、線、矩形、圓、位圖的方法,基本可滿足各種繪制要求。onDraw()主要是用來把所有View都繪制在同一個(gè)畫布上,達(dá)到將canvas內(nèi)容顯示屏幕上。在繪制自定義組件時(shí)先調(diào)用onDraw()方法后調(diào)用Draw()方法實(shí)現(xiàn)。自定義組件方法自定義組件Animation提供了一系列的動畫效果的API,具有漸變透明度動畫效果(alph),漸變尺寸伸縮動畫效果(scale),畫面轉(zhuǎn)換位置移動動畫效果(translate),畫面轉(zhuǎn)移旋轉(zhuǎn)動畫效果(rotate)等四種動畫效果。Animation動畫簡介自定義動畫Animation通過對View完成一系列圖形變換,實(shí)現(xiàn)動畫效果。定義一組指令,指令指定圖形變換類型、觸發(fā)時(shí)間、持續(xù)時(shí)間。指令可以是以XML文件方式定義,也可以是以源代碼方式定義。程序沿時(shí)間線執(zhí)行指令便可實(shí)現(xiàn)動畫效果。Animation方法自定義動畫(1)XML動畫Animation從總體上可以分為三類:TweenedAnimation(補(bǔ)間動畫),補(bǔ)間動畫方式如表5.3所示。Animation方法自定義動畫FrameAnimation(逐幀動畫),逐幀動畫方法如表5.4所示。Animation方法自定義動畫PropertyAnimation(屬性動畫),該類Animation與補(bǔ)間動畫相似,屬性動畫屬性如表5.5所示。Animation方法自定義動畫(2)自定義動畫Android中的圖形繪制需要繼承View組件,并且重寫它的onDraw(Canvascanvas)方法。重寫onDraw(Canvascanvas)方法時(shí)涉及繪圖API:Canvas,Canvas代表“依附”于指定的View畫布。Animation方法自定義動畫自定義動畫實(shí)現(xiàn)步驟如下所示:自定義View的派生類AnimatorView,調(diào)用圖形數(shù)據(jù),并設(shè)置畫筆及其風(fēng)格。在派生類AnimatorView中定義待繪制的圖形數(shù)據(jù)(寬度、間距、速度、顏色、次數(shù))。通過重載onDraw()方法,設(shè)置畫筆、坐標(biāo)位置,實(shí)現(xiàn)矩形方塊的繪制。在MainActivity中遍歷AnimatorView類,展示該動畫展示在界面。通過以上步驟實(shí)現(xiàn)如圖5.7自定義動畫效果。Animation方法自定義動畫AsyncTask是Android提供的輕量級異步類,可直接繼承AsyncTask在類中實(shí)現(xiàn)異步操作,并提供接口反饋當(dāng)前異步執(zhí)行程度(可以通過接口實(shí)現(xiàn)UI進(jìn)度更新),然后反饋執(zhí)行結(jié)果傳遞到UI主線程。AsyncTask是封裝后的后臺任務(wù)類,具有結(jié)構(gòu)清晰、功能定義明確,對于多個(gè)后臺任務(wù)時(shí),具有簡單,清晰等特點(diǎn)。AsyncTask簡介異步類AsyncTask抽象出后臺線程運(yùn)行的五個(gè)狀態(tài),并提供了五個(gè)回調(diào)函數(shù):onPreExecute():該回調(diào)函數(shù)在任務(wù)被執(zhí)行后立即由UI線程調(diào)用。該步驟用來建立任務(wù),在用戶接口(UI)上顯示進(jìn)度條(準(zhǔn)備運(yùn)行)AsyncTask類方法異步類doInBackground(Params...):該回調(diào)函數(shù)由后臺線程在onPreExecute()方法執(zhí)行結(jié)束后立即調(diào)用。在這里執(zhí)行耗時(shí)的后臺計(jì)算。計(jì)算的結(jié)果必須由該函數(shù)返回,并被傳遞到onPostExecute()中。在該函數(shù)內(nèi)也可以使用publishProgress(Progress...)來發(fā)布一個(gè)或多個(gè)進(jìn)度單位(unitsofprogress)。這些值將會在onProgressUpdate(Progress...)中被發(fā)布到UI線程(后臺運(yùn)行)AsyncTask類方法異步類onProgressUpdate(Progress...):該函數(shù)由UI線程在publishProgress(Progress...)方法調(diào)用完后被調(diào)用。一般用于動態(tài)顯示一個(gè)進(jìn)度條(進(jìn)度更新)onPostExecute(Result):當(dāng)后臺計(jì)算結(jié)束后調(diào)用。后臺計(jì)算的結(jié)果會被作為參數(shù)傳遞給這一函數(shù)(完成后臺任務(wù))onCancelled():在調(diào)用AsyncTask的cancel()方法時(shí)調(diào)用(取消任務(wù))AsyncTask類方法異步類實(shí)現(xiàn)進(jìn)倒計(jì)時(shí)的功能。時(shí)長5s,當(dāng)時(shí)間結(jié)束時(shí)在界面顯示結(jié)束時(shí)間并提醒用戶倒計(jì)時(shí)結(jié)束,效果如圖5.8、圖5.9所示。使用AsyncTask類示例異步類實(shí)現(xiàn)倒計(jì)時(shí)功能步驟如下所示:(1)初始化界面,點(diǎn)擊“開始”按鈕,調(diào)用異步類開始倒計(jì)時(shí)。(2)構(gòu)建AsyncTask方法。(3)TestAsyncTask被后臺線程執(zhí)行后,UI線程被調(diào)用,一般用于初始化界面控件。(4)調(diào)用doInBackground()方法進(jìn)行數(shù)據(jù)的實(shí)時(shí)獲取并將數(shù)據(jù)進(jìn)行返回。(5)將doInBackground()方法中返回的數(shù)據(jù)顯示到界面,進(jìn)行UI的實(shí)時(shí)更新。(6)運(yùn)行項(xiàng)目,實(shí)現(xiàn)圖5.8、圖5.9所示效果。使用AsyncTask類示例異步類通過如下步驟實(shí)現(xiàn)如圖5.2所示U酒保健康助手模塊。第一步:在Androidstudio中創(chuàng)建一個(gè)Android工程,命名為“UJB_AIFragment”。第二步:導(dǎo)入實(shí)現(xiàn)折線圖MPChartLib.jar,具體步驟如下所示。(1)復(fù)制MPChartLib.jar包,添加到如圖5.11所示目錄下。使用AsyncTask類示例任務(wù)實(shí)施(2)選擇該項(xiàng)目,右擊鼠標(biāo)出現(xiàn)如圖5.12所示界面,點(diǎn)擊“OpenModuleSettings”,跳轉(zhuǎn)到下一界面,選擇appDependencise。(3)單擊“+”顯示選擇欄,如圖5.14所示。選擇Filedependency,跳轉(zhuǎn)到下一界面,選擇添加的jar包后點(diǎn)擊“OK”。第三步:使用onDraw()方法,新建MyImageView.java自定義矩形圖片區(qū)域,用于放置笑話、娛樂、科普等圖片。第四步:實(shí)現(xiàn)自定義界面布局,調(diào)用MPChartLib.jar包與MyImageView.java顯示矩形圖片框和折線圖界面fragment_advise.xml。使用AsyncTask類示例任務(wù)實(shí)施第五步:獲取酒精數(shù)據(jù)Json串并解析,設(shè)置折線圖屬性,并將解析的酒精濃度數(shù)據(jù)添加到折線圖中進(jìn)行顯示。第六步:使用OnClick()方法設(shè)置圖片點(diǎn)擊跳轉(zhuǎn)事件,點(diǎn)擊界面中科普、笑話、娛樂等圖片,實(shí)現(xiàn)對應(yīng)界面的跳轉(zhuǎn)。第七步:使用onTouchEvent()方法實(shí)現(xiàn)圖片觸摸事件,當(dāng)用戶觸摸圖片邊緣或中心時(shí),實(shí)現(xiàn)圖片對應(yīng)部位的下沉效果。第八步:點(diǎn)擊科普按鈕,跳轉(zhuǎn)到科普界面通過異步類獲取科普信息,并顯示到界面。第九步:運(yùn)行程序,運(yùn)行結(jié)果如圖5.2所示。使用AsyncTask類示例任務(wù)實(shí)施本項(xiàng)目主要介紹了U酒保健康助手模塊的實(shí)現(xiàn)。通過自定義組件、自定義動畫,實(shí)現(xiàn)折線圖和圖片下沉效果,采用異步請求獲取網(wǎng)絡(luò)數(shù)據(jù),并更新UI。在項(xiàng)目學(xué)習(xí)過程中可以了解自定義組件和自定義動畫的使用方法,掌握異步類的使用原理。任務(wù)總結(jié)measure測量layout布局draw繪制
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 智慧解決方案:智能城市管理
- 消防應(yīng)急避險(xiǎn)
- 3.2.3離子反應(yīng) 課件 高一上學(xué)期化學(xué)蘇教版(2019)必修第一冊
- 糖尿病個(gè)人教育與護(hù)理
- 傳統(tǒng)毛筆課件教學(xué)課件
- 日常生活食品安全
- 生產(chǎn)安全事故案例培訓(xùn)教材
- 布谷鳥節(jié)奏游戲教案反思
- 弧度制說課稿
- 海水的運(yùn)動說課稿
- 《工廠改善報(bào)告》課件
- 2024分娩鎮(zhèn)痛ppt課件完整版
- 酒類企業(yè)的消防安全管理
- 國際業(yè)務(wù)基礎(chǔ)知識培訓(xùn)
- 完整版小學(xué)低年級學(xué)生寫話能力培養(yǎng)的研究小課題研究報(bào)告
- 智能輸水管網(wǎng)優(yōu)化方案
- 三位數(shù)乘以兩位數(shù)-計(jì)算題大全
- 頂崗實(shí)習(xí)的安全教育
- 婚前孕前話優(yōu)生知識講座
- 關(guān)愛職工眼健康知識講座
- 玄武巖纖維項(xiàng)目可行性研究報(bào)告
評論
0/150
提交評論