天天看點

Android應用截圖方法

在Android應用開發過程中,可能會遇到需要對整個界面或者某一部分進行截圖的需求。Android中對View的截圖也有很多中方式:

使用DrawingCache

直接調用View.draw

DrawingCache方法:

如果使用DrawingCache,則對要截圖的View有一個要求:View本身已經顯示在界面上。如果View沒有添加到界面上或者沒有顯示(繪制)過,則buildDrawingCache會失敗。這種方式比較适合對應用界面或者某一部分的截圖。步驟很簡單:

View.draw方法:

如果需要截圖的View并沒有添加到界面上,可能是通過java代碼建立的或者inflate建立的,此時調用DrawingCache方法是擷取不到位圖的。因為View在添加到容器中之前并沒有得到實際的大小(如果LayoutWidth是MatchParent,它還沒有Parent…),是以首先需要指定View的大小:

然後View和其内部的子View都具有了實際大小,也就是完成了布局,相當與添加到了界面上。接着就可以建立位圖并在上面繪制了:

對于WebView的截圖有一點特殊,網頁内容并不能在布局完成後立即渲染出來,因為WebView大小的變化就相當與桌面浏覽器視窗大小的變化,Webkit需要根據視窗大小重新渲染所有的内容,這最多大概需要300ms的時間(對于不同性能的裝置、網頁複雜程度和Webkit版本可能不同)。如果建立背景的WebView需要截圖的話,應該在建立時就對其進行布局操作,這樣加載完成後大部分就已經渲染完畢了(除非有異步的js處理)。

本文轉自 netcorner 部落格園部落格,原文連結:http://www.cnblogs.com/netcorner/p/4867632.html   ,如需轉載請自行聯系原作者

下一篇: 學習iOS