View中的cach機(jī)制,可以實(shí)現(xiàn)類似截圖效果

View組件顯示的內(nèi)容可以通過cache機(jī)制保存為bitmap,

void  setDrawingCacheEnabled(boolean flag);
Bitmap  getDrawingCache(boolean autoScale);
void  buildDrawingCache(boolean autoScale);
void  destroyDrawingCache();

我們要獲取它的cache先要通過setDrawingCacheEnable方法把cache開啟,然后再調(diào)用getDrawingCache方法就可 以獲得view的cache圖片了。buildDrawingCache方法可以不用調(diào)用,因?yàn)檎{(diào)用getDrawingCache方法時(shí),若果 cache沒有建立,系統(tǒng)會(huì)自動(dòng)調(diào)用buildDrawingCache方法生成cache。若果要更新cache, 必須要調(diào)用destoryDrawingCache方法把舊的cache銷毀,才能建立新的。
當(dāng)調(diào)用setDrawingCacheEnabled方法設(shè)置為false, 系統(tǒng)也會(huì)自動(dòng)把原來的cache銷毀。

ViewGroup在繪制子view時(shí),而外提供了兩個(gè)方法

void setChildrenDrawingCacheEnabled(boolean enabled);
setChildrenDrawnWithCacheEnabled(boolean enabled);

setChildrenDrawingCacheEnabled方法可以使viewgroup里所有的子view開啟cache, setChildrenDrawnWithCacheEnabled使在繪制子view時(shí),若該子view開啟了cache, 則使用它的cache進(jìn)行繪制,從而節(jié)省繪制時(shí)間。

獲取cache通常會(huì)占用一定的內(nèi)存,所以通常不需要的時(shí)候有必要對(duì)其進(jìn)行清理,通過destroyDrawingCache或setDrawingCacheEnabled(false)實(shí)現(xiàn)。
不可以在ondraw方法中使用getDrawingCache,會(huì)出現(xiàn)棧溢出
可以用于對(duì)某個(gè)view的截圖
有時(shí)候需要將某個(gè)view的內(nèi)容以圖片的方式保存下來,感覺就和截圖差不多,可以使用View 的getDrawingCache方法,返回一個(gè)Bitmap對(duì)象。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容