




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quá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ā)、可維護性架構(gòu)設(shè)計,有豐富的實戰(zhàn)經(jīng)驗。愿意和他人分享自己對技術(shù)的理解和感悟,講課邏輯清晰,生動幽默。River《Android開發(fā)入門與實戰(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é)計算機信息專業(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)炮手寫回收池與適配器碼牛學(xué)院-用代碼碼出牛逼人生今晚課題課程咨詢加瑤瑤老師QQ:1298199564目錄COMPANY01RecyclerView的復(fù)用機制,簡單說說View回收與復(fù)用的過程03
說一說RecyclerView適配器的原理02
RecyclerView支持多個不同類型布局,他們怎么緩存,并且查找的呢04
理清RecyclerView架構(gòu)思想,手寫RecyclerView自定義控件聯(lián)系我們視頻資料加叮當(dāng)老師QQ:1979846055課程咨詢加瑤瑤老師QQ:1298199564技術(shù)問題加David老師QQ:1051917835為什么需要學(xué)習(xí)RecyclerView學(xué)習(xí)RecyclerView的五大理由面試容易考,關(guān)于自定控件少不了RecyclerViewRecyclerView控件是打交道最多的一個控件,理清他的實現(xiàn)方式有助于理解列表加載原理RecyclerView的復(fù)用思想,在程序開發(fā)中可謂是一大利器,例如MessageTouchEvent都是實現(xiàn)了這種復(fù)用思想RecyclerView的開發(fā)經(jīng)常會遇到一些異常,知道他底層的原理,容易快速定位問題RecyclerView適配器模式,真正做到了UI界面與邏輯代碼的分離,我們可以借鑒這種適配器的思想應(yīng)用到項目中RecyclerView的用法RecyclerViewRecyclerView一般作為Android顯示列表的控件,有諸多優(yōu)異的性能。回收池策略能加載上億級數(shù)據(jù)并不發(fā)生卡頓適配器模式能展示任意顯示需求RecyclerView架構(gòu)中核心組件1、回收池:能回收任意Item控件,并返回符合類型的Item控件;比如onBinderViewHodler方法中的第一個參數(shù)是從回收池中返回的2、適配器:Adapter接口,經(jīng)常輔助RecyclerView實現(xiàn)列表展示;
適配器模式,將用戶界面展示與交互分離3、RecyclerView:是做觸摸事件的交互,主要實現(xiàn)邊界值判斷;
根據(jù)用戶的觸摸反饋,協(xié)調(diào)回收池對象與適配器對象之間的工作RecyclerView為什么能實現(xiàn)加載億級數(shù)據(jù)有限加載:一次永遠只有30個男嘉賓能上臺核心思想:有限加載RecyclerView的架構(gòu)在生活中的體現(xiàn)1.上貨將貨物放入傳送帶2.傳動傳送帶開始傳動3.到達貨物到達傳送帶終點4.新增01
03
04
傳送帶的始端空出位置將新的貨物放入傳送帶傳送帶的工作機制02
RecyclerView的架構(gòu)實現(xiàn)1.加載加載第一屏數(shù)據(jù)2.滑動用戶手指開始滑動3.滑出用戶將不需要的信息劃出屏幕4.加載01
03
04
屏幕底端新增用戶需要看到的數(shù)據(jù)02
RecyclerView的架構(gòu)思考架構(gòu):充分利用傳送帶原理,永遠只有用戶看到的數(shù)據(jù)才會加載到內(nèi)存,而看不到的在等待被加載。傳送帶能夠源源不斷的傳送億級貨物,RecyclerView也能夠顯示加載億級Item。傳送帶的工作機制可以比作生產(chǎn)者與消費者模式適配器與回收池的工作機制
加載第一屏加載第二屏
回收池回收策略
回收池填充策略RecyclerView中的第一屏加載回收池適配器(Adapter)界面需要填充將需求交給回收池回收池空空如也onCreateViewHodler()用戶實現(xiàn)適配器ViewRecyclerView中的第二屏回收池適配器(Adapter)底部出現(xiàn)空缺觸發(fā)加載機制onBindViewHodler(view)用戶實現(xiàn)適配器刷新View找到View重新被添加到View樹上回收池回收策略回收池Viewtype值ImageViewTextViewLineralyout達到回收條件View回收池填充策略回收池type值ImageViewTextViewLineralyoutgetViewType()View移除回收池,并返回給RecyclerView層02回收池應(yīng)該怎么設(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的左上頂點力離屏幕的距離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的左上頂點力離屏幕的距離onMeasrue初始化為什么需要重寫onMeasure呢?:
RecyclerView的寬度和高度開發(fā)者們都喜歡設(shè)置層wrap_content或者match_parent。所以需要通過實際內(nèi)容確定RecyclerView高度情況1:當(dāng)item數(shù)不足的時候,比如RecyclerView只加載了2個Item以子控件總高度測算的高度為準(zhǔn)
情況2:
當(dāng)item數(shù)量超過實際屏幕高度,以match_parent為準(zhǔn),也就是最大高度onLayout初始化為什么需要重寫onLayout呢?:
RecyclerView作為一個容器類控件繼承自ViewGroup。必須實現(xiàn)onLayout方法來子控件進行正確擺放,由于我們手寫的RecyclerVIew是垂直的,擺放是由上至下進行。同時為了不將所有Item全部加載到內(nèi)存也需要進行準(zhǔn)確的控制事件攔截為什么需要事件攔截呢?:
RecyclerView作為一個容器類控件需要攔截滑動事件,用戶手指滑動則讓所有子Item滑動,子Item在滑動中是接收不到任何事件的。當(dāng)RecyclerVIew靜止時,子Item需要接收到點擊事件如何快速學(xué)習(xí)提升自學(xué)要找學(xué)習(xí)資料,不
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中央2025年中央港澳工作辦公室直屬單位招聘5人筆試歷年參考題庫附帶答案詳解
- 店面股份轉(zhuǎn)讓的合同范例二零二五年
- 招商外包合作協(xié)議二零二五年
- 買方墊資贖樓協(xié)議
- 二零二五版租房合同補充協(xié)議范例
- 驗貨服務(wù)合同二零二五年
- 小學(xué)生防溺水防電課件
- 農(nóng)藥使用規(guī)范講解
- 2025標(biāo)準(zhǔn)辦公室租賃合同樣本
- 2025年房屋買賣合同的內(nèi)容有哪些
- 2024山西云時代技術(shù)有限公司社會招聘59人筆試參考題庫附帶答案詳解
- 《軌道工程》重點整理
- 企業(yè)發(fā)展能力分析 -以中國石化集團公司為例-企業(yè)發(fā)展-畢業(yè)論文
- FANUC伺服報警系統(tǒng)介紹和維修要點
- 學(xué)生會組織結(jié)構(gòu)圖及具體職責(zé)
- DL∕T 5544-2018 架空輸電線路錨桿基礎(chǔ)設(shè)計規(guī)程
- 高層建筑核心筒設(shè)計實例分析(共67頁)
- 陶瓷磚購銷合同模板直接用
- 電機學(xué)同步電機-全套課件
- 基于AT89S52單片機的自動干手器的設(shè)計與實現(xiàn)
評論
0/150
提交評論