我正在开发应用程序,并在运行Android 2.2的设备上对其进行测试。在我的代码中,我使用了通过BitmapFactory.decodeResource检索的位图,并且可以通过对其进行调用来进行更改bitmap.setPixels()。当我在运行Android 1.6的朋友的设备上进行测试时,我IllegalStateException接到的电话bitmap.setPixels。在线文档说,IllegalStateException当位图是不可变的时,从该方法抛出。该文档没有说明有关decodeResource返回不变位图的任何内容,但显然必须如此。我是否可以进行另一个调用以从应用程序资源可靠地获取可变位图,而无需第二个Bitmap对象(我可以创建一个相同大小的可变位图并绘制到包装它的Canvas中,但是这需要两个相同大小的位图使用了两倍于我的预期内存)?
3 回答
噜噜哒
TA贡献1784条经验 获得超7个赞
使用可变选项true将位图复制到自身。这样既不需要额外的内存消耗,也不需要长代码行。
Bitmap bitmap= BitmapFactory.decodeResource(....);
bitmap= bitmap.copy(Bitmap.Config.ARGB_8888, true);
紫衣仙女
TA贡献1839条经验 获得超15个赞
我们可以首先通过实例化BitmapFactory.Options类为BitmapFactory设置选项,然后将名为“ inMutable”的选项字段设置为true,然后将此选项实例传递给解码资源。
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inMutable = true;
Bitmap bp = BitmapFactory.decodeResource(getResources(), R.raw.white, opt);
添加回答
举报
0/150
提交
取消