2012-03-29 64 views
0

我有一個派生自ImageView的課程。在其onDraw方法重寫中,我需要將視圖的內容複製到位圖中。副本必須包含整個內容而不僅僅是可見部分。如何獲取該內容的大小

要完成此操作,我創建一個位圖並調用super.onDraw傳遞此位圖的畫布作爲參數。然後我將得到的位圖繪製到onDraw通過的畫布上。代碼如下。

我的問題是我的位圖應該有多大?目前我使用getWidth()getHeight()作爲位圖的尺寸。但這不起作用,因爲它返回視圖大小,而不是內容大小。我正在尋找一種方法,在根據視圖的scaleType調整了drawable的大小後獲取內容的大小。

drawable的大小不起作用,因爲drawable可能與內容大小不同。

 
    @Override 
    public void onDraw(Canvas canvas) 
    { 
     if (_bitmap == null) 
     { 
      final int w = getWidth(); 
      final int h = getHeight();
_bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); _canvas = new Canvas(_bitmap);
super.onDraw(_canvas); } canvas.drawBitmap(_bitmap, 0, 0, null); }

+0

什麼問題呢?代碼是否工作? – noob 2012-03-29 15:07:33

+0

我編輯了問題並更改了標題 – akonsu 2012-03-29 16:27:21

回答

0

你有沒有看着

getDrawingCache(布爾自動量程)

返回該視圖繪圖緩存位圖。

將autoScale設置爲true。

0

這樣,你得到的測量和佈局後的尺寸。你應該得到的基本繪製對象,並調用getIntrinsicWidth我猜

+0

謝謝,但這不起作用,我編輯了問題以澄清 – akonsu 2012-03-29 16:30:15