版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
《android移動互聯(lián)網(wǎng)高級開發(fā)》直播公開課用代碼碼出自己牛逼的人生碼牛學(xué)院代碼成就人生android移動互聯(lián)網(wǎng)高級開發(fā)碼牛學(xué)院-用代碼碼出精彩的人生碼牛學(xué)院Android講師介紹David復(fù)旦大學(xué)工程碩士,原Oppo資深研發(fā)工程師,網(wǎng)易特邀Android講師,專注技術(shù)十年,產(chǎn)品控、代碼控,擁有豐富的項目經(jīng)驗,主持研發(fā)了多個成功上線的大型互聯(lián)網(wǎng)項目。熱愛互聯(lián)網(wǎng),熱衷于各種Android底層技術(shù),精通NDK架構(gòu)和前端開發(fā),擅長移動互聯(lián)網(wǎng)高并發(fā)、可維護(hù)性架構(gòu)設(shè)計,有豐富的實(shí)戰(zhàn)經(jīng)驗。愿意和他人分享自己對技術(shù)的理解和感悟,講課邏輯清晰,生動幽默。River《Android開發(fā)入門與實(shí)戰(zhàn)第二版》作者之一,《NFC:Arduino、Android與PhoneGap近場通信》譯者,國內(nèi)首批Android開發(fā),曾任職于銀聯(lián),華夏幸福等知名公司,擅長項目重構(gòu),架構(gòu),以及性能優(yōu)化,擁有多年的項目開發(fā)以及管理經(jīng)驗,原網(wǎng)易特邀Android講師。授課風(fēng)格幽默風(fēng)趣,有激情,注重站在學(xué)員的角度考慮問題。Zee中南大學(xué)計算機(jī)信息專業(yè)畢業(yè),前新浪架構(gòu)師,58同城項目負(fù)責(zé)人。8年Android行業(yè)從業(yè)經(jīng)驗,豐富的項目研發(fā)以及管理經(jīng)驗,原網(wǎng)易特邀Android講師,對架構(gòu)方面有深入的研究。授課激情有活力,能耐心幫助學(xué)員解決項目中遇到的問題。David老師QQ:1051917835阿里P7崗面試關(guān)于RecyclerView的連環(huán)炮,一小時解決RecyclerView所有底層疑惑碼牛學(xué)院-用代碼碼出牛逼人生今晚課題相見老師的QQ:421869573目錄COMPANY01RecyclerView的復(fù)用機(jī)制,簡單說說View回收與復(fù)用的過程03
說一說RecyclerView適配器的原理02
RecyclerView支持多個不同類型布局,他們怎么緩存,并且查找的呢04
理清RecyclerView架構(gòu)思想,手寫RecyclerView自定義控件碼牛學(xué)院-用代碼碼出牛逼人生相見老師的QQ:421869573David老師的QQ:1051917835為什么需要學(xué)習(xí)RecyclerView學(xué)習(xí)RecyclerView的五大理由面試容易考,關(guān)于自定控件少不了RecyclerViewRecyclerView控件是打交道最多的一個控件,理清他的實(shí)現(xiàn)方式有助于理解列表加載原理RecyclerView的復(fù)用思想,在程序開發(fā)中可謂是一大利器,例如MessageTouchEvent都是實(shí)現(xiàn)了這種復(fù)用思想RecyclerView的開發(fā)經(jīng)常會遇到一些異常,知道他底層的原理,容易快速定位問題RecyclerView適配器模式,真正做到了UI界面與邏輯代碼的分離,我們可以借鑒這種適配器的思想應(yīng)用到項目中RecyclerView的用法RecyclerViewRecyclerView一般作為Android顯示列表的控件,有諸多優(yōu)異的性能?;厥粘夭呗阅芗虞d上億級數(shù)據(jù)并不發(fā)生卡頓適配器模式能展示任意顯示需求RecyclerView架構(gòu)中核心組件1、回收池:能回收任意Item控件,并返回符合類型的Item控件;比如onBinderViewHodler方法中的第一個參數(shù)是從回收池中返回的2、適配器:Adapter接口,經(jīng)常輔助RecyclerView實(shí)現(xiàn)列表展示;
適配器模式,將用戶界面展示與交互分離3、RecyclerView:是做觸摸事件的交互,主要實(shí)現(xiàn)邊界值判斷;
根據(jù)用戶的觸摸反饋,協(xié)調(diào)回收池對象與適配器對象之間的工作RecyclerView為什么能實(shí)現(xiàn)加載億級數(shù)據(jù)有限加載:一次永遠(yuǎn)只有30個男嘉賓能上臺核心思想:有限加載RecyclerView的架構(gòu)在生活中的體現(xiàn)1.上貨將貨物放入傳送帶2.傳動傳送帶開始傳動3.到達(dá)貨物到達(dá)傳送帶終點(diǎn)4.新增01
03
04
傳送帶的始端空出位置將新的貨物放入傳送帶傳送帶的工作機(jī)制02
RecyclerView的架構(gòu)實(shí)現(xiàn)1.加載加載第一屏數(shù)據(jù)2.滑動用戶手指開始滑動3.滑出用戶將不需要的信息劃出屏幕4.加載01
03
04
屏幕底端新增用戶需要看到的數(shù)據(jù)02
RecyclerView的架構(gòu)思考架構(gòu):充分利用傳送帶原理,永遠(yuǎn)只有用戶看到的數(shù)據(jù)才會加載到內(nèi)存,而看不到的在等待被加載。傳送帶能夠源源不斷的傳送億級貨物,RecyclerView也能夠顯示加載億級Item。傳送帶的工作機(jī)制可以比作生產(chǎn)者與消費(fèi)者模式RecyclerView源碼分析RecyclerView的職責(zé)就是將Datas中的數(shù)據(jù)以一定的規(guī)則展示在它的上面,但說破天RecyclerView只是一個ViewGroup,它只認(rèn)識View,不清楚Data數(shù)據(jù)的具體結(jié)構(gòu),所以兩個陌生人之間想構(gòu)建通話,我們很容易到適配器模式,因此,RecyclerView需要一個Adapter來與Datas進(jìn)行交流:RecyclerView源碼分析RecyclerView表示只會和ViewHolder進(jìn)行接觸,而Adapter的工作就是將Data轉(zhuǎn)換為RecyclerView認(rèn)識的ViewHolder,因此RecyclerView就間接地認(rèn)識了Datas。RecyclerView源碼分析事情雖然進(jìn)展愉快,但RecyclerView是個很懶惰的人,盡管Adapter已經(jīng)將Datas轉(zhuǎn)換為RecyclerView所熟知的View,但RecyclerView并不想自己管理些子View,因此,它雇傭了一個叫做LayoutManager的大祭司來幫其完成布局,現(xiàn)在,圖示變成下面這樣RecyclerView源碼分析LayoutManager協(xié)助RecyclerView來完成布局。但LayoutManager這個大祭司也有弱點(diǎn),就是它只知道如何將一個一個的View布局在RecyclerView上,但它并不懂得如何管理這些View,如果大祭司肆無忌憚的玩弄View的話肯定會出事情。必須有個管理View的護(hù)法,它就是Recycler,LayoutManager在需要View的時候回向護(hù)法進(jìn)行索取,當(dāng)LayoutManager不需要View(試圖滑出)的時候,就直接將廢棄的View丟給RecyclerRecyclerView源碼分析到了這里,有負(fù)責(zé)翻譯數(shù)據(jù)的Adapter,有負(fù)責(zé)布局的LayoutManager,有負(fù)責(zé)管理View的Recycler,一切都很完美,但RecyclerView乃何等神也,它下令說當(dāng)子View變動的時候姿態(tài)要優(yōu)雅(動畫),所以用雇傭了一個舞者ItemAnimator,因此,舞者也進(jìn)入了RecyclerView中的第一屏加載回收池適配器(Adapter)界面需要填充將需求交給回收池回收池空空如也onCreateViewHodler()用戶實(shí)現(xiàn)適配器ViewRecyclerView中的第二屏回收池適配器(Adapter)底部出現(xiàn)空缺觸發(fā)加載機(jī)制onBindViewHodler(view)用戶實(shí)現(xiàn)適配器刷新View找到View重新被添加到View樹上回收池回收策略回收池Viewtype值ImageViewTextViewLineralyout達(dá)到回收條件View回收池填充策略回收池type值ImageViewTextViewLineralyoutgetViewType()View移除回收池,并返回給RecyclerView層02回收池應(yīng)該怎么設(shè)計呢
回收池設(shè)計存和取是回收池策略必須實(shí)現(xiàn)的TextViewTextViewImageViewImageViewLinearLayoutLinearLayout前景:回收池本身是一種集合,既能夠存也能夠取TextViewTextViewTextViewImageViewImageViewImageViewLinearLayoutLinearLayoutLinearLayout回收池03手寫RecyclerView的代碼如何設(shè)計重寫方法步驟已經(jīng)明確了:
RecyclerView肯定是繼承自ViewGroup的我們應(yīng)該重寫ViewGroup中哪些的方法呢?代碼(需要重寫自定義哪些方法呢?)onMeasure
onLayoutonTouchEventonInterceptTouchEventonInterceptTouchEventsrcollyBy代碼編寫階段View構(gòu)建初始化階段
Adapter初始化階段View擺放策略階段
滑動事件判斷階段備注:任何初始化都離不開成員變量的聲明RecyclerView成員變量聲明需要聲明哪些成員變量呢List<View>viewList:緩存已經(jīng)加載到屏幕上的View這些View不存在回收池中,需要集合表示,方便后續(xù)查找和移除?intcurrentY:
:記錄在Y軸上滑動的距離?introwCount:
:記錄在RecyclerView加載的總數(shù)據(jù),比如1w條?intfirstRow:
:記錄在屏幕中第一個View在數(shù)據(jù)內(nèi)容中的位置,比如目前是第34個元素在屏幕的一個位置?Recyclerrecycler:
:持有一個回收池的引用?intsrollY:
RecyclerView中第一個View的左上頂點(diǎn)力離屏幕的距離RecyclerView成員變量聲明需要聲明哪些成員變量呢List<View>viewList:緩存已經(jīng)加載到屏幕上的View這些View不存在回收池中,需要集合表示,方便后續(xù)查找和移除?intcurrentY:
:記錄在Y軸上滑動的距離?introwCount:
:記錄在RecyclerView加載的總數(shù)據(jù),比如1w條?intfirstRow:
:記錄在屏幕中第一個View在數(shù)據(jù)內(nèi)容中的位置,比如目前是第34個元素在屏幕的一個位置?Recyclerrecycler:
:持有一個回收池的引用?intsrollY:
RecyclerView中第一個View的左上頂點(diǎn)力離屏幕的距離onMeasrue初始化為什么需要重寫onMeasure呢?:
RecyclerView的寬度和高度開發(fā)者們都喜歡設(shè)置層wrap_content或者match_parent。所以需要通過實(shí)際內(nèi)容確定RecyclerView高度情況1:當(dāng)item數(shù)不足的時候,比如RecyclerView只加載了2個Item以子控件總高度測算的高度為準(zhǔn)
情況2:
當(dāng)item數(shù)量超過實(shí)際屏幕高度,以match_parent為準(zhǔn),也就是最大高度onLayout初始化為什么需要重寫onLayout呢?:
RecyclerView作為一個容器類控件繼承自ViewGroup。必須實(shí)現(xiàn)onLayout方法來子控件進(jìn)行正確擺放,由于我們手寫的RecyclerVIew是垂直的,擺放是由上至下進(jìn)行。同時為了不將所有Item全部加載到內(nèi)存也需要進(jìn)行準(zhǔn)確的控制事件攔截為什么需要事件攔截呢?:
RecyclerView作為一個容器類控件需要攔截滑動事件,用戶手指滑動則讓所有子Item滑動,子Item在滑動中是接收不到任何事件的。當(dāng)RecyclerVIew靜止時,子Item需要接收到點(diǎn)擊事件如何快速學(xué)習(xí)提升自學(xué)要找學(xué)習(xí)資料,不清楚要學(xué)到什么程度
碰到問題耗很久,很難找人幫忙指點(diǎn)、解答
太耗時、太低效
沒有實(shí)際的項目可以實(shí)踐,學(xué)了感覺沒用
學(xué)不全面、學(xué)不系統(tǒng)太難、太苦逼了但是,現(xiàn)在你不需要這么苦逼了!??!總結(jié)1.學(xué)習(xí)源碼并打破屬性動畫的全新認(rèn)知2.膽子要夠大,先要敢想3.然后敢干!如何找到高級特效的創(chuàng)新的靈感4.突破自我打造獨(dú)家動畫框架的裝逼指南如何做到如此犀利的創(chuàng)新?比熟悉女朋友還要熟悉核心源碼相見老師的QQ:421869573課程配套服務(wù)01.答疑服務(wù)專門的答疑老師替學(xué)員解答問題01.學(xué)習(xí)計劃1V1為你定制專屬的學(xué)習(xí)計劃01.考核與作業(yè)考核與作業(yè)意義在于理論與實(shí)踐并行01.專屬班級專屬班級打開你的人際交流圈01.新技術(shù)分享時刻關(guān)注國際市場新技術(shù)的動態(tài),分享給學(xué)員01.就業(yè)指導(dǎo)簡歷指導(dǎo)和面試指導(dǎo)并行,讓你的崗位不侮辱你的能力01.企業(yè)內(nèi)推眾多一線企業(yè)的內(nèi)推崗位等你拿01.升級更新最新技術(shù)一直免費(fèi)學(xué)01.錢程無憂Toppro優(yōu)先權(quán),告別死工資01.漲薪無憂畢業(yè)不滿三年的學(xué)員學(xué)完課程不漲5K,全額退款碼牛學(xué)院-用代碼碼出牛逼人生Android高級UI注:貝塞爾曲線,動畫,布局原理不僅僅只是Android上可以使用,其他語言在實(shí)現(xiàn)這些效果時大同小異; UI概述1:UI繪制流程2:事件分發(fā)機(jī)制3:Paint/貝塞爾曲線4:動畫源碼,進(jìn)階5:屏幕適配6:項目實(shí)戰(zhàn)碼牛學(xué)院-用代碼碼出牛逼人生Android高級架構(gòu)師注:架構(gòu)不管在哪門語言都是需要的,架構(gòu)不單單是代碼,更是思路;
架構(gòu)概述1:設(shè)計原則/模式
2:Framework/啟動等源碼分析3:Google最新推出的組件4:常見第三方框架分析手寫碼牛學(xué)院-用代碼碼出牛逼人生Android
NDK深層進(jìn)階注:4G時代出來了抖音等大量音視頻應(yīng)用,5G時代必然會涌現(xiàn)更多的需要大數(shù)據(jù)量的應(yīng)用,NDK的學(xué)習(xí)迫在眉睫;而C/C+語言也將成為加密/防反編譯的趨勢; NDK概述1:C/C++基礎(chǔ)/進(jìn)階
2:腳本語法/Linux基礎(chǔ)3:音視頻4:WebRtc/OPENGL5:項目
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于大數(shù)據(jù)的海上風(fēng)電場海底管道運(yùn)維管理
- 基于云原生的軟件開發(fā)模型探索
- 產(chǎn)品優(yōu)勢與市場契合
- 動態(tài)內(nèi)容選擇器處理
- 【核心素養(yǎng)】人音版三年級上冊第4課《老水牛角彎彎》教案
- 慈善活動怎么主持稿(9篇)
- 員工轉(zhuǎn)正申請表集合4篇
- 物理實(shí)驗心得8篇
- 幼兒園中班藝術(shù)教案7篇
- 電話銷售個人工作總結(jié)范文5篇
- 2024-2025學(xué)年八年級上冊物理第一次月考試卷01【人教版】
- 部編人教版二年級道德與法治上冊完整全冊課件
- 泥水平衡施工工法
- 汽車配件中英文術(shù)語對照
- 工作證明(通用)
- 食用菌的遺傳與育種講課講稿
- 國家電網(wǎng)有限公司廢舊物資管理辦法
- 北大版高等數(shù)學(xué)課后習(xí)題答案_完整版
- 小學(xué)學(xué)科教學(xué)中如何滲透心理健康教育
- 中醫(yī)診所備案信息表及說明
- 電力電子技術(shù)在新能源中的應(yīng)用
評論
0/150
提交評論