0
我試圖在我的ImageView
的內容中添加一些內容,這些內容由資源中的Drawable
表示。我知道資源中的所有Drawable
默認情況下都是不可變的,但即使在我調用mutable()
方法並從此Drawable
獲得Bitmap
將其傳遞給Canvas
對象,我也會得到java.lang.IllegalStateException: Immutable bitmap passed to Canvas constructor
。下面是代碼:從資源中修改位圖
Drawable homeImage = mHomeImage.getBackground(); // my ImageView
homeImage.mutate();
Canvas c = new Canvas(((BitmapDrawable)homeImage).getBitmap());
有沒有什麼辦法可以修改此Bitmap
,而無需創建它的副本?
謝謝你的迴應,但正如你看到我問:有沒有辦法修改此位圖**而不創建它的副本**? – teoREtik
我剛纔看到你的問題。我只是把上面的代碼作爲你的問題中的代碼不起作用。我不認爲你可以修改位圖而不創建它的副本。如果你正試圖在imageview上繪製一些東西。創建一個新的位圖並將新的東西繪製到新的位圖中,然後使用framelayout將視圖堆疊在一起。它將顯示爲單一視圖。 – blessenm
不,我的目標是在圖像頂部繪製wifi信號的狀態,每3秒鐘聽一次網絡速度,並且在複製'Bitmap'的情況下我擔心內存消耗,但不要緊,謝謝您的迴應。 – teoREtik