安卓自定义View时,处理canvas缩放引起canvas.drawBitmap画质降低

自定义view时,经常会用到图片绘制,canvas.drawBitmap家族可以说是非常常用的API,不过有时候开发中要求我们的控件在某些页面是一个比例,某些页面是另一个显示比例,例如我遇到的,item的角标,噗……又是这个,在主页面是100%显示,在列表页要85%显示。这里写图片描述
对于整体大小的控制,可以想到单独对自定义view里的各个元素宽高属性进行参数控制,但是这样既麻烦,又要写一大堆代码,很少浪费时间,另一个方案就是简单粗暴的对canvas操作,让canvas进行缩放,实现整体大小的改变。
然后我就只加了一行代码,接收一个缩放系数,实现了所需效果,但是问题来了,列表页的item的角标画质降低了,好渣,好吧,这个在之前遇到时是关闭了硬件加速解决的,现在硬件加速本身是关闭的,还要怎样,经过一番搜查,到底是找到了方案,google大神早就有针对这个操作的解决方案,只是没经历过还真不知道这么好用,也是很简单。添加如下两行代码:

     private  PaintFlagsDrawFilter pfd;
    //initView()中
     pfd= new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG);
     //针对绘制bitmap添加抗锯齿
    mImgPaint.setFilterBitmap(true);
    //ondraw()中
     /**
     * 对canvas设置抗锯齿的滤镜,防止变化canvas引起画质降低
     */
    canvas.setDrawFilter(pfd);
    canvas.drawBitmap(mTagImg,mWidth-mTagImg.getWidth(),0,mImgPaint);

完美解决。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值