为了账号安全,请及时绑定邮箱和手机立即绑定

BitmapFactory.decodeResource在Android 2.2中返回可变的位图

BitmapFactory.decodeResource在Android 2.2中返回可变的位图

慕虎7371278 2019-11-13 13:22:27
我正在开发应用程序,并在运行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);


查看完整回答
反对 回复 2019-11-13
?
紫衣仙女

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);


查看完整回答
反对 回复 2019-11-13
  • 3 回答
  • 0 关注
  • 534 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信