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í)候有必要對其進(jìn)行清理,通過destroyDrawingCache或setDrawingCacheEnabled(false)實(shí)現(xiàn)癣缅。
不可以在ondraw方法中使用getDrawingCache厨剪,會(huì)出現(xiàn)棧溢出
可以用于對某個(gè)view的截圖
有時(shí)候需要將某個(gè)view的內(nèi)容以圖片的方式保存下來,感覺就和截圖差不多友存,可以使用View 的getDrawingCache方法祷膳,返回一個(gè)Bitmap對象。