我正在尝试为我的ImageView
内容添加一些内容,该内容由资源中的Drawable
表示。我知道默认情况下来自资源的所有Drawable
都是不可变的,但即使我调用mutable()
方法并从Bitmap
获取Drawable
以将其传递给{{1}对象我得到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());
?
答案 0 :(得分:1)
试试这个
Bitmap bmp1 = (((BitmapDrawable)homeImage).getBitmap())
.copy(Config.ARGB_8888, true);
Canvas c = new Canvas(bmp1);
您需要为画布创建一个新的位图。由于画布使用我们传递给存储的位图,因此位图应该是可变的。