国产一区二区精品-国产一区二区精品久-国产一区二区精品久久-国产一区二区精品久久91-免费毛片播放-免费毛片基地

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > requestLayout和invalidate區(qū)別?

requestLayout和invalidate區(qū)別?

來源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-10-11 16:22:45 1697012565

一、requestLayout和invalidate區(qū)別

1、requestLayout會(huì)直接遞歸調(diào)用父窗口的requestLayout,直到ViewRootImpl,然后觸發(fā)peformTraversals,由于mLayoutRequested為true,會(huì)導(dǎo)致onMeasure和onLayout被調(diào)用。不一定會(huì)觸發(fā)OnDraw 。

2、requestLayout觸發(fā)onDraw可能是因?yàn)樵谠趌ayout過程中發(fā)現(xiàn)l,t,r,b和以前不一樣,那就會(huì)觸發(fā)一次invalidate,所以觸發(fā)了onDraw,也可能是因?yàn)閯e的原因?qū)е耺Dirty非空(比如在跑動(dòng)畫) 。

3、view的invalidate不會(huì)導(dǎo)致ViewRootImpl的invalidate被調(diào)用,而是遞歸調(diào)用父view的invalidateChildInParent,直到ViewRootImpl的invalidateChildInParent,然后觸發(fā)peformTraversals,會(huì)導(dǎo)致當(dāng)前view被重繪,由于mLayoutRequested為false,不會(huì)導(dǎo)致onMeasure和onLayout被調(diào)用,而OnDraw會(huì)被調(diào)用。

延伸閱讀:

二、View繪制的三個(gè)步驟

View繪制分三個(gè)步驟,順序是:onMeasure,onLayout,onDraw。經(jīng)代碼親測(cè),log輸出顯示:調(diào)用invalidate方法只會(huì)執(zhí)行onDraw方法;調(diào)用requestLayout方法只會(huì)執(zhí)行onMeasure方法和onLayout方法,并不會(huì)執(zhí)行onDraw方法。

所以當(dāng)我們進(jìn)行View更新時(shí),若僅View的顯示內(nèi)容發(fā)生改變且新顯示內(nèi)容不影響View的大小、位置,則只需調(diào)用invalidate方法;若View寬高、位置發(fā)生改變且顯示內(nèi)容不變,只需調(diào)用requestLayout方法;若兩者均發(fā)生改變,則需調(diào)用兩者,按照View的繪制流程,推薦先調(diào)用requestLayout方法再調(diào)用invalidate方法。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
重置windows究竟刪掉了哪些文件?

一、重置windows重置專指【保留我的文件】這一選項(xiàng)的重置。刪除全部文件的顧名思義,就是字面意思,刪掉了所有文件,這里也不說。1、雖然是選擇...詳情>>

2023-10-11 18:01:01
Web前端工程師主要用什么語(yǔ)言?

一、Web前端工程師主要用什么語(yǔ)言就目前Web前端開發(fā)可能涉及的語(yǔ)言來講,有PHP語(yǔ)言、JavaScript、Ruby、HTML5、Java和Python。當(dāng)然并不是說以上...詳情>>

2023-10-11 17:34:44
Sudo和Root的區(qū)別為什么?

一、Sudo和Root的區(qū)別最小權(quán)限原則是一種信息和計(jì)算機(jī)安全概念,它認(rèn)為授予程序和用戶執(zhí)行任務(wù)所需的最少或最低限度的權(quán)限。以 root 用戶登錄后...詳情>>

2023-10-11 17:25:44
PendingIntent和Intent的區(qū)別?

一、PendingIntent和Intent的區(qū)別從結(jié)構(gòu)上來說,PendingIntent 是 Intent 的包裝類,其內(nèi)部持有一個(gè)代表最終意圖操作的 Intent(事實(shí)上,內(nèi)部是...詳情>>

2023-10-11 17:14:52
TCP擁塞控制算法—優(yōu)缺點(diǎn)、適用環(huán)境、性能分析?

一、TCP擁塞控制算法面向連接的TCP和無連接的UDP在擁塞發(fā)生時(shí)對(duì)擁塞指示的不同反應(yīng)和處理,導(dǎo)致對(duì)網(wǎng)絡(luò)資源的不公平使用問題。在擁塞發(fā)生時(shí),有...詳情>>

2023-10-11 17:11:33