2013-04-01 67 views
0
Bitmap bitmap; 
View v1 = l1.getRootView(); 
v1.setDrawingCacheEnabled(true); 
bitmap = Bitmap.createBitmap(v1.getDrawingCache()); 
v1.setDrawingCacheEnabled(false); 

不適合我的工作。空指針在得到視圖

我使用的是LinearLayout

+0

你在哪裏實例化'l1'? – FoamyGuy

+0

也許[錯誤採取截圖](http://stackoverflow.com/questions/15748713/)可以提供一些想法。 –

回答

0

您需要啓用繪圖緩存,如果v1.getDrawingCache()的返回null。 http://developer.android.com/reference/android/view/View.html#getDrawingCache(boolean)

+0

OP在其源代碼中有'v1.setDrawingCacheEnabled(true);'所以看起來這不是問題。 – FoamyGuy

+0

來自文檔:打開硬件加速時,啓用繪圖緩存對渲染沒有影響,因爲系統使用不同的加速機制來忽略該標記。如果要爲視圖使用位圖,即使啓用了硬件加速,請參閱setLayerType(int,android.graphics.Paint)以獲取有關如何啓用軟件和硬件層的信息。 – levis501

+0

我認爲這是爲了如果你正在創建自己的視圖和重寫onDraw'使繪圖緩存對渲染沒有影響當他們說我認爲他們的意思是渲染到屏幕上,而不是使用getDrawingCache()我已經使用getDrawingCache( )在過去與硬件加速並沒有問題。 – FoamyGuy