1. 程式人生 > >Android Bitmap 改變的時候可能會丟擲 java.lang.IllegalStateException: only mutable bitmaps may be reconfigured

Android Bitmap 改變的時候可能會丟擲 java.lang.IllegalStateException: only mutable bitmaps may be reconfigured

Android Bitmap 改變的時候可能會丟擲  java.lang.IllegalStateException: only mutable bitmaps may be reconfigured

從伺服器獲取到了itmap,然後修改大小,

bitmap.setHeight(12);
bitmap.setWidth(12);
然後就報出java.lang.IllegalStateException 這個錯誤,

原因是因為:

bitmap.setHeight(12);
會先判斷bitmap.isMutable()是否為true,如果為false,也就是是不是易變的圖片,如果是true,則可以更改,否者  就會丟擲
java.lang.IllegalStateException異常。為什麼呢?
isMutable( )是易變的、可以修改的意思,而
bitmap.setHeight(12);
語句在SDK中的解釋是 安卓:解決mCanvas.setBitmap(mBitmap)出現 <wbr>java.lang.IllegalStateException問題           可以很清楚地看出,此函式要求Bitmap變數是可變的。也就是說,這個Bitmap只能用來呼叫
bitmap.setHeight(12);
函式,則必須用可修改的Bitmap。 具體的解決方案就是,加上 mBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true) 這句話,這個時候就相當於複製了一個新的可變的Bitmap
,這個時候就不會報錯了,問題解決!