从资源修改位图

时间:2011-12-06 09:00:23

标签: android graphics

我正在尝试为我的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());

1 个答案:

答案 0 :(得分:1)

试试这个

Bitmap bmp1 = (((BitmapDrawable)homeImage).getBitmap())
        .copy(Config.ARGB_8888, true);
Canvas c = new Canvas(bmp1);

您需要为画布创建一个新的位图。由于画布使用我们传递给存储的位图,因此位图应该是可变的。