淺談AndroidView繪制三大流程探索及常見問題-創(chuàng)新互聯(lián)

View繪制的三大流程,指的是measure(測量)、layout(布局)、draw(繪制)

創(chuàng)新互聯(lián)長期為超過千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為費(fèi)縣企業(yè)提供專業(yè)的網(wǎng)站制作、網(wǎng)站設(shè)計(jì),費(fèi)縣網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

measure負(fù)責(zé)確定View的測量寬/高,也就是該View需要占用屏幕的大小,確定完View需要占用的屏幕大小后,就會通過layout確定View的最終寬/高和四個(gè)頂點(diǎn)在手機(jī)界面上的位置,等通過measure和layout過程確定了View的寬高和要顯示的位置后,就會執(zhí)行draw繪制View的內(nèi)容到手機(jī)屏幕上。

在詳細(xì)介紹這三大流程之前,需要簡單了解一下ViewRootImpl,View繪制的三大步驟都是通過ViewRootImpl實(shí)現(xiàn)的,ViewRootImpl是連接WindowManager窗口管理和DecorView頂層視圖的紐帶。View的繪制流程從ViewRootImpl的performTraversals方法開始,順序執(zhí)行measure、layout、draw這三個(gè)流程,最終完成對View的繪制工作,在performTraversals方法中,會調(diào)用measure、layout、draw這三個(gè)方法,這三個(gè)方法內(nèi)部也會調(diào)用其對應(yīng)的onMeasure、onLayout、onDraw方法,通常我們在自定義View時(shí),也就是重寫的這三個(gè)方法來實(shí)現(xiàn)View的具體繪制邏輯

下面詳細(xì)了解下各個(gè)步驟經(jīng)歷的主要方法(這里貼的源碼版本為API 23)

一、measure

在performTraversals方法中,第一個(gè)需要進(jìn)行的就是measure過程,獲取到必要信息后,performTraversals方法中首先會調(diào)用measureHierarchy方法,接著measureHierarchy方法里再去調(diào)用performMeasure方法,在performMeasure方法中最終就會去調(diào)用View的measure方法,從而開始進(jìn)行測量過程

 private void performMeasure(int childWidthMeasureSpec, int childHeightMeasureSpec) {
  Trace.traceBegin(Trace.TRACE_TAG_VIEW, "measure");
  try {
   mView.measure(childWidthMeasureSpec, childHeightMeasureSpec);
  } finally {
   Trace.traceEnd(Trace.TRACE_TAG_VIEW);
  }
 }

網(wǎng)頁標(biāo)題:淺談AndroidView繪制三大流程探索及常見問題-創(chuàng)新互聯(lián)
本文URL:http://muchs.cn/article0/cedjio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、小程序開發(fā)用戶體驗(yàn)、網(wǎng)站設(shè)計(jì)公司網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名