android 代码设置PNG图片失真问题

今天测试那边反馈一个问题,我们的游戏背景的渐变处有明显的光晕失真:先上图

用蓝线圈出来的地方渐变效果有明显的失真现象

我的代码是:

gameBg.setBackgroundDrawable(ImageUtil.getResDrawable(R.drawable.join_bj));

 

在网上找了一下都提到:在Activity的onCreate()方法中直接设置 getWindow().setFormat(PixelFormat.RGBA_8888);

资料链接:http://blog.sina.com.cn/s/blog_7f56ca7b0100uz4g.html

感觉说的挺在理的,但是尝试之后,还是没任何改变。

这是为什么呢,我在xml文件中直接设置和用gameBg.setBackgroundResource(R.drawable.join_bj);设置都不会失真

我再自己检查原来是应为之前的开发为了控制内存溢出,创建了一个工具类来进行缓存

ImageUtil.getResDrawable(R.drawable.join_bj)这个就是调用了缓存,而在我的工具方法里面有一段这样设置的

 

   BitmapFactory.Options opt = new BitmapFactory.Options();
   opt.inPreferredConfig = Bitmap.Config.RGB_565;
   opt.inPurgeable = true;
   opt.inInputShareable = true;
   BitmapDrawable drawable = new BitmapDrawable(context.getResources(), BitmapFactory.decodeStream(
     context.getResources().openRawResource(drawableId), null, opt));
   WeakReference<Drawable> softDrawable = new WeakReference<Drawable>(drawable);
   drawable = null;
   imageWeakMap.put(String.valueOf(drawableId), softDrawable);

 

 

其中有这句话:opt.inPreferredConfig = Bitmap.Config.RGB_565;

这个是当初为了降低图片占用的内存,设的参数,也是应为这个参数降低了图片的质量,使得图片失真了。

我把它改成了opt.inPreferredConfig = Bitmap.Config.ARGB_8888;或者把它注销掉,就没失真了

 

最终效果:

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风堂主人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值