




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
《騰訊1+x安卓應用開發(fā)(中級)》教案
一、教案設(shè)計課題項目5任務(wù)1網(wǎng)絡(luò)框架的使用課型理論課理論課時2課時實踐課時2課時教學目標知識目標能力(技能)目標熟悉常用的網(wǎng)絡(luò)框架原理。熟悉常用的網(wǎng)絡(luò)框架的實現(xiàn)。教學重點網(wǎng)絡(luò)框架的使用。教學難點理解不同網(wǎng)絡(luò)框架的適用場景。教學內(nèi)容1.Android常用網(wǎng)絡(luò)框架包括okhttp、retrofit、volley等。(1)okhttpokhttp是Square公司開源的一款網(wǎng)絡(luò)框架,封裝了一個高性能的http請求庫。支持spdy、http2.0、websocket等協(xié)議,支持同步、異步請求,封裝了線程池,封裝了數(shù)據(jù)轉(zhuǎn)換,能有效提高性能。okhttp處理了很多網(wǎng)絡(luò)疑難雜癥:會從很多常用的連接問題中自動恢復;如果您的服務(wù)器配置了多個IP地址,當?shù)谝粋€IP連接失敗的時候,okhttp會自動嘗試下一個IP;okhttp還處理了代理服務(wù)器問題和SSL握手失敗問題。okhttp的github地址:/square/okhttp。(2)retrofitretrofit是基于okhttp封裝的網(wǎng)絡(luò)請求框架,網(wǎng)絡(luò)請求的工作本質(zhì)上由okhttp完成,而retrofit僅負責網(wǎng)絡(luò)請求接口的封裝。retrofit的接口層封裝了請求參數(shù),header,url等信息,之后由okhttp完成后續(xù)的請求工作。在服務(wù)端返回數(shù)據(jù)后,okhttp將原始的結(jié)果傳遞給retrofit,retrofit根據(jù)客戶端的相關(guān)配置,將結(jié)果解析后回調(diào)給客戶端。retrofit的github地址:/square/retrofit。(3)volleyvolley是在2013年的Google大會上發(fā)布的一款Android平臺網(wǎng)絡(luò)通信庫,具有網(wǎng)絡(luò)請求的處理、小圖片的異步加載和緩存等功能,能夠幫助AndroidAPP更方便地執(zhí)行網(wǎng)絡(luò)操作,而且更快速高效。適合數(shù)據(jù)量不大但是通信頻繁的場景,缺點是不能下載文件。volley的github地址:/google/volley。2.Volley基本用法(1)Volley網(wǎng)絡(luò)請求隊列Volley請求網(wǎng)絡(luò)是基于請求隊列的,開發(fā)者只要把請求放在請求隊列中,請求隊列會依次進行請求。如果網(wǎng)絡(luò)請求不頻繁,一個應用程序只要一個隊列就可以了,如果請求比較頻繁,可以一個Activity對應一個隊列。創(chuàng)建隊列的代碼如下所示:RequestQueuemRequestQueue=Volley.newRequestQueue(getApplicationContext());(2)StringRequest的用法StringRequest請求返回的數(shù)據(jù)是String類型的。為了發(fā)出一條HTTP請求,我們需要創(chuàng)建一個StringRequest對象,StringRequest構(gòu)造方法有四個參數(shù),如下所示:StringRequest(intmethod,Stringurl,Listener<String>listener,ErrorListenererrorListener)表8-1StringRequest構(gòu)造方法參數(shù)參數(shù)說明method用來設(shè)置GET或POST請求url用來設(shè)置請求的地址listener用來設(shè)置請求成功時的回調(diào)errorListener用來設(shè)置請求失敗時的回調(diào)最后,需要將這個StringRequest對象添加到RequestQueue,如下所示:mRequestQueue.add(stringRequest);(3)JsonObjectRequest的用法JsonObjectRequest請求返回的是JSON格式的數(shù)據(jù)。為了發(fā)出一條HTTP請求,我們需要創(chuàng)建一個JsonObjectRequest對象,JsonObjectRequest構(gòu)造方法有五個參數(shù),如下所示:JsonObjectRequest(intmethod,Stringurl,JSONObjectjsonRequest,Listener<JSONObject>listener,ErrorListenererrorListener)表8-2JsonObjectRequest構(gòu)造方法參數(shù)參數(shù)說明method用來設(shè)置GET或POST請求url用來設(shè)置請求的地址jsonRequest發(fā)出POST請求時的請求體listener用來設(shè)置請求成功時的回調(diào)errorListener用來設(shè)置請求失敗時的回調(diào)最后,需要將這個JsonObjectRequest對象添加到RequestQueue,如下所示:mRequestQueue.add(jsonObjectRequest);(4)ImageRequest的用法ImageRequest用來加載圖片。為了發(fā)出一條HTTP請求,我們需要創(chuàng)建一個ImageRequest對象,ImageRequest構(gòu)造方法有七個參數(shù),如下所示:ImageRequest(Stringurl,Response.Listener<Bitmap>listener,intmaxWidth,intmaxHeight,ScaleTypescaleType,ConfigdecodeConfig,esponse.ErrorListenererrorListener)表8-3ImageRequest構(gòu)造方法參數(shù)參數(shù)說明url用來設(shè)置請求的地址listener用來設(shè)置請求成功時的回調(diào)maxWidth圖片的最大寬度maxHeight圖片的最大高度scaleType圖片的縮放類型decodeConfig顏色設(shè)置errorListener用來設(shè)置請求失敗時的回調(diào)最后,需要將這個ImageRequest對象添加到RequestQueue,如下所示:mRequestQueue.add(imageRequest);教學準備教材,PPT、教綱、教案參考資料/square/okhttp,/square/retrofit,/google/volley教學過程方法與手段教學備注【課堂導入】為什么要學習網(wǎng)絡(luò)框架?因為大多數(shù)應用程序都需要連接網(wǎng)絡(luò),從服務(wù)器獲取數(shù)據(jù),或者發(fā)送數(shù)據(jù)給服務(wù)器。在Android中進行網(wǎng)絡(luò)連接通常使用Scoket和HTTP,HTTP使用較多。HTTP請求可以采用原生的HttpUrlConnection,也可以采用一些成熟的網(wǎng)絡(luò)框架。采用網(wǎng)絡(luò)框架能提高開發(fā)效率。本任務(wù)我們將解決如何利用Volley框架的GET請求獲取服務(wù)返回的數(shù)據(jù)的問題?!窘虒W實施】8.1.1任務(wù)描述利用Volley框架的GET請求獲取服務(wù)器返回的String類型的數(shù)據(jù)、json格式的數(shù)據(jù)和圖片。如圖所示。8.1.2問題引導為什么要學習網(wǎng)絡(luò)框架?因為大多數(shù)應用程序都需要連接網(wǎng)絡(luò),從服務(wù)器獲取數(shù)據(jù),或者發(fā)送數(shù)據(jù)給服務(wù)器。在Android中進行網(wǎng)絡(luò)連接通常使用Scoket和HTTP,HTTP使用較多。HTTP請求可以采用原生的HttpUrlConnection,也可以采用一些成熟的網(wǎng)絡(luò)框架。采用網(wǎng)絡(luò)框架能提高開發(fā)效率。本任務(wù)我們將解決如何利用Volley框架的GET請求獲取服務(wù)返回的數(shù)據(jù)的問題。8.1.3知識準備Android常用網(wǎng)絡(luò)框架介紹Volley基本用法Volley網(wǎng)絡(luò)請求隊列StringRequest的用法JsonObjectRequest的用法ImageRequest的用法8.1.4完成利用Volley框架的GET請求獲取服務(wù)器返回的String類型的數(shù)據(jù)、json格式的數(shù)據(jù)和圖片8.1.5知識拓展Volley框架請求JsonArray類型的數(shù)據(jù)Volley框架使用ImageLoader加載圖片【知識(技能)鞏固練習】使用網(wǎng)絡(luò)框架加載本校官網(wǎng)首頁源代碼?!窘虒W小結(jié)】講授、演示課后作業(yè)與訓練完成項目5課后練習對應的習題。教學反思課題項目5任務(wù)2圖片處理框架的使用課型理論課理論課時2課時實踐課時2課時教學目標知識目標能力(技能)目標熟悉常用的圖片處理框架原理。熟悉常用的圖片處理框架的實現(xiàn)。教學重點圖片處理框架的使用。教學難點理解不同圖片處理框架的特點。教學內(nèi)容1.Android常用圖片框架簡介Android常用圖片框架包括Picasso、Glide、Fresco等。Picasso由Square公司出品,Glide由BumpTechnologies開發(fā),F(xiàn)resco由Facebook開發(fā)。Fresco支持gif,圖片加載效率高,支持圖片從模糊到清晰的漸進式加載,圖片可以以任意的中心點顯示在ImageView上,采用了類似GC的引用計數(shù)機制,使那些不再使用的圖片對象可以更早地被回收,降低內(nèi)存的開銷。但包很大,API不夠簡潔,用法復雜。Picasso比Glide更加簡潔和輕量,Glide比Picasso功能更為豐富。第一次加載圖片時,Picasso會比Glide快,而當緩存中已經(jīng)有下載好的圖片時,Glide的緩存機制會使Glide顯示圖片比Picasso快。此外,Glide支持gif,Picasso不支持gif。Glide的bitmap默認的格式是RGB_565,但是Picasso用的是ARGB_8888,所以Glide圖片質(zhì)量上不如Picasso,但是Glide的內(nèi)存消耗只占Picasso一半。這里我們主要介紹Glide框架的使用。2.Glide框架的使用使用Glide框架使得我們可以在Android平臺上以非常簡單的方式加載和展示圖片。(1)圖片的加載Glide框架允許我們從不同途徑加載圖片。示例如下://從網(wǎng)絡(luò)加載圖片Glide.with(context).load("/d/file/20180627/201708101544375040327.png").into(imageView);.with()接收的參數(shù)是可以是Context、Activity、Fragment、FragmentActivity、ApplicationContext中的任何一個,.load()是核心的請求方法,以上代碼表示對指定的地址進行網(wǎng)絡(luò)請求,.into()指定將圖片顯示在哪個ImageView控件中。以下三個代碼片段分別展示了三種加載圖片的方式。//通過本地文件加載圖片F(xiàn)ilefile=newFile(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"test.jpg");Glide.with(context).load(file).into(imageView);//通過資源id加載圖片intresourceId=R.drawable.test;Glide.with(context).load(resourceId).into(imageView);//通過二進制流加載圖片byte[]image=getImageBytes();Glide.with(this).load(image).into(imageView);在加載圖片的過程中,可以設(shè)置圖片未加載完畢時默認顯示的圖片,還可以設(shè)置圖片加載失敗時顯示的圖片。代碼如下:Glide.with(context).load(url).placeholder(R.drawable.pic1)//圖片未加載完畢時默認顯示的圖片.error(R.drawable.pic2).into(imageViewGif);//圖片加載失敗時顯示的圖片//圖片預加載Glide.with(context).load(url).preload()(2)對圖片的處理以下三個代碼片段分別展示了如何實現(xiàn)“調(diào)整圖片大小”、“設(shè)置縮略圖”和“對圖片做圓形化處理”。//調(diào)整圖片的大小Glide.with(context).load(url).override(300,200)//調(diào)整圖片的寬高為300*200.into(imageView);//設(shè)置縮略圖Glide.with(context).load(url).thumbnail(0.1f)//設(shè)置為原圖的十分之一.into(imageView);//對圖片做圓形化處理RequestOptionsoptionsCircle=newRequestOptions().circleCrop();Glide.with(this).load(imageUrl).apply(optionsCircle).into(imageView);借助GlideTransformations庫,我們可以非常輕松的實現(xiàn)各種基本的圖片變換,如裁剪變換、顏色變換、模糊變換等。使用該庫需要在模塊的gradle中添加依賴。implementation'jp.wasabeef:glide-transformations:4.3.0'//對圖片做模糊變換RequestOptionsoptionsBlur=newRequestOptions().transform(newBlurTransformation());Glide.with(this).load(imageUrl).apply(optionsBlur).into(imageView);newBlurTransformation()可以接收0個參數(shù),1個參數(shù),2個參數(shù)。0個參數(shù)表示采用默認值,1個參數(shù)時傳入模糊度,2個參數(shù)時傳入模糊度和采樣率。//對圖片做圓角變換RequestOptionsoptionsRounded=newRequestOptions().transform(newRoundedCornersTransformation(10,5));Glide.with(this).load(imageUrl).apply(optionsRounded).into(imageView);newRoundedCornersTransformation()可以接收2個參數(shù)或3個參數(shù)。2個參數(shù)時傳入角度和外邊距,3個參數(shù)時傳入角度、外邊距和圓角類型。//對圖片添加蒙版RequestOptionsoptionsMask=newRequestOptions().transform(newMaskTransformation(R.drawable.star));Glide.with(this).load(imageUrl).apply(optionsMask).into(imageView);newMaskTransformation()接收1個參數(shù),傳入目標圖片。最終實現(xiàn)保留覆蓋目標像素的源像素,丟棄其余的源像素和目標像素的效果。//對圖片做灰度變換RequestOptionsoptionsGray=newRequestOptions().transform(newGrayscaleTransformation());Glide.with(this).load(imageUrl).apply(optionsGray).into(imageView);newGrayscaleTransformation()接收0個參數(shù)。//對圖片做裁剪變換RequestOptionsoptionsCrop=newRequestOptions().transform(newCropTransformation(300,200,CropTransformation.CropType.TOP));Glide.with(this).load(imageUrl).apply(optionsCrop).into(imageView);newCropTransformation()可以接收2個參數(shù)或3個參數(shù)。2個參數(shù)時傳入裁剪的寬度和高度,此時,從圖片中部進行裁剪。3個參數(shù)時傳入裁剪的寬度、高度和裁剪位置。裁剪位置可以選擇上、中、下之一。CropTransformation.CropType.TOP表示上,CropTransformation.CropType.CENTER表示中,CropTransformation.CropType.BOTTOM表示下。教學準備教材,PPT、教綱、教案參考資料/facebook/fresco,/square/picasso,/bumptech/glide教學過程方法與手段教學備注【課堂導入】圖片處理是Android開發(fā)中經(jīng)常會遇到的操作。如何更好地加載圖片,如何對圖片做縮放、圓形化等處理?您將能從本任務(wù)介紹的Android常用圖片框架中找到答案?!窘虒W實施】8.2.1任務(wù)描述利用Glide框架加載網(wǎng)絡(luò)圖片,并對加載的圖片進行大小調(diào)整、裁剪、添加顏色濾鏡、圓形化、灰度等處理。如圖所示。8.2.2問題引導圖片處理是Android開發(fā)中經(jīng)常會遇到的操作。如何更好地加載圖片,如何對圖片做縮放、圓形化等處理?您將能從本任務(wù)介紹的Android常用圖片框架中找到答案。8.2.3知識準備Android常用圖片框架簡介Glide框架的使用圖片的加載對圖片的處理8.2.4利用Glide框架加載網(wǎng)絡(luò)圖片,并對加載的圖片進行大小調(diào)整、裁剪、添加顏色濾鏡、圓形化、灰度等處理。8.2.5知識拓展Glide如何避免內(nèi)存存儲和磁盤存儲【知識(技能)鞏固練習】分別對圖片做圓形化和圓角處理?!窘虒W小結(jié)】講授、演示課后作業(yè)與訓練完成項目5課后練習對應的習題。教學反思
課題項目5任務(wù)3日志框架的使用課型理論課理論課時1課時實踐課時1課時教學目標知識目標能力(技能)目標理解Logger日志框架的特點。熟悉Logger日志框架的使用。教學重點Loger框架的基本使用方法。教學難點根據(jù)不同需要靈活使用Logger的API。教學內(nèi)容1.Logger簡介Logger打印的日志可以包含線程的信息、類的信息、方法的信息、自定義消息,支持從日志跳轉(zhuǎn)到源碼。如圖8-4所示。圖8-4Logger打印debug信息效果圖2.Logger的使用(1)添加依賴想要使用Logger框架,必須先添加依賴,如下所示:implementation'com.orhanobut:logger:2.2.0'(2)初始化設(shè)置通過初始化設(shè)置,可以控制日志輸出時是否顯示線程信息,是否顯示方法信息,顯示的方法棧個數(shù),添加打印適配器。FormatStrategyformatStrategy=PrettyFormatStrategy.newBuilder().showThreadInfo(true)//是否顯示線程信息,默認為true.methodCount(3)//調(diào)用堆棧的方法行數(shù),默認為2.tag(TAG)//日志的全局標志.默認為PRETTY_LOGGER.build();//添加一個打印適配器Logger.addLogAdapter(newAndroidLogAdapter(formatStrategy));(3)不同級別日志的打印日志一般分6個等級,從低到高分別是VERBOSE、DEBUG、INFO、WARN、ERROR、FATAL。對應中文的意思就是繁瑣信息、調(diào)試信息、一般信息、警告信息、錯誤信息、嚴重錯誤信息。在記錄日志的時候,可以根據(jù)不同的日志級別來進行記錄。Logger的6個靜態(tài)方法可以用來打印6種不同級別的日志信息。具體代碼及含義如下:Logger.i("打印information字符串");Logger.d("打印debug字符串");Logger.e("打印error字符串");Logger.w("打印warning字符串");Logger.v("打印verbose字符串");Logger.wtf("在特殊情況下使用此項打印意外錯誤等");(4)打印JSON類型的數(shù)據(jù)把符合JSON格式的字
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小公司公帳管理制度
- 工地辦公室管理制度
- 投標書制作管理制度
- 早餐店店長管理制度
- 柴油抗磨劑管理制度
- 核電廠油務(wù)管理制度
- 檔案水電暖管理制度
- 檢測站場地管理制度
- 檢驗驗報告管理制度
- 模具部成本管理制度
- 福建省福州市2023?2024學年高一下冊期末考數(shù)學試卷附解析
- 2024年中國鐵路成都局集團有限公司招聘考試《鐵路基本常識》真題庫及答案
- 生態(tài)草場使用權(quán)轉(zhuǎn)讓協(xié)議
- 第18課清朝的邊疆治理教學設(shè)計-統(tǒng)編版七年級歷史下冊
- 物流實操試題及答案詳解
- 糧食熏蒸作業(yè)管理制度
- 醫(yī)院醫(yī)保獎懲管理制度
- 2025年中級經(jīng)濟師之中級經(jīng)濟師金融專業(yè)題庫練習試卷A卷附答案
- Python數(shù)據(jù)科學與機器學習結(jié)合試題及答案
- 2025-2030中國EHS管理軟件行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 海鮮水產(chǎn)電商商業(yè)計劃書
評論
0/150
提交評論