2010-10-21 188 views
7

這讓我感到莫名其妙。我需要將位圖從一個ImageView複製到另一個。我不想簡單地將一個ImageView複製到另一個ImageView,因爲我需要對位圖進行一些更改。將一個ImageView的位圖內容複製到另一個

下面是一些不起作用的代碼。

ImageView ivSrc = (ImageView) findViewById(R.id.photo); 

ivSrc.setDrawingCacheEnabled(true); 
    Bitmap bmSrc1 = ivSrc.getDrawingCache(); // will cause nullPointerException 

    Bitmap bmSrc2 = Bitmap.createBitmap(ivSrc.getDrawingCache());//bmSrc2 will be null 

    View vSrc = (View) ivSrc.getParent(); 
    vSrc.setDrawingCacheEnabled(true); 
    Bitmap bmSrc3 = Bitmap.createBitmap(vSrc.getDrawingCache()); //black bitmap 

//要測試的位圖:

 ImageView ivDest = (ImageView) findViewById(R.id.photo2); 
     ivDest.setImageBitmap(bmSrc1); //bmSrc1, 2, 3 results shown above 

我必須要對此錯誤的,因爲這樣做的副本應該是那麼容易。 TIA

回答

20

未使用繪圖緩存,但不需要調用buildDrawingCache()?

我會做到這一點:

Bitmap bmSrc1 = ((BitmapDrawable)ivSrc.getDrawable()).getBitmap(); 
Bitmap bmSrc2 = bmSrc1.copy(bmSrc1.getConfig(), true); 

注意bmSrc2是可變的,即可以在畫布堅持下去,做任何你的地方繪製它之前,它喜歡。

+0

如果(使用您的變量)'bmSrc2'出現負寬度和/或高度? – 2012-11-09 18:37:28

相關問題