2011-10-14 32 views
3

我正在尋找一個視圖層次結構並將其轉換爲位圖。使用view.getDrawingCache()完全符合我的要求,但如果在繪製視圖之前嘗試完成,將無法正常工作。是否還有另一個功能可以完成相同的功能,但在實際繪製之前呢?我想創建視圖並將其轉換爲位圖來顯示和放棄實際視圖。如果有辦法強制繪製視圖,那麼也可能會起作用。有任何想法嗎?Android在繪製之前獲取視圖的位圖嗎?

我發現這在以前的文章:

public static Bitmap loadBitmapFromView(View v) { 
     Bitmap b = Bitmap.createBitmap(v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);     
     Canvas c = new Canvas(b); 
     v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height); 
     v.draw(c); 
     return b; 
    } 

這看起來很有希望,但是當我用它我得到的是一個半透明的黑盒子。

回答

3

好吧我想通了。您可以使用此代碼,從this post稍作修改。

public static Bitmap loadBitmapFromView(View v) { 
      Bitmap b = Bitmap.createBitmap(v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);     
      Canvas c = new Canvas(b); 
      v.measure(v.getLayoutParams().width, v.getLayoutParams().height); //Change from original post 
      v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height); 
      v.draw(c); 
      return b; 
    } 
+0

用v.getWidth()替換v.getLayoutParams().width,它工作。 – stealthcopter

+0

這不需要你有視圖嗎? – StuStirling

相關問題