关于canvas.drawBitmap(bgBm, 0, 0, null)小米手机生成的图片不完整解决方案

13 篇文章 0 订阅
4 篇文章 0 订阅

具体需求是为生成二维码,为二维码添加背景和logo,添加背景时使用canvas.drawBitmap(bgBm, 0, 0, null),发现在小米手机上背景图片生成的不完整,但是其他机型都是完整的;

canvas.drawBitmap(bgBm, 0, 0, null)

这种方法对于大部分手机是可行的,但是对于小米的刘海屏手机(mi 8)会出现右边和下边的边框 具体原因不知 可能和小米获取屏幕高度的时候是自动去除掉底部操作栏的不知道是处于什么考虑 后来经过一番尝试,发现另外一种设置bitmap的方法成功适配

解决方案:

Rect src=new Rect(0,0,bgBm.getWidth(),bgBm.getHeight());
canvas.drawBitmap(bgBm,src,src,null);

源码中:

public void drawBitmap(@NonNull Bitmap bitmap, @Nullable Rect src, @NonNull Rect dst,
            @Nullable Paint paint) {
        super.drawBitmap(bitmap, src, dst, paint);
    }

拿到了对应的bitmap,这时候我们如果要将它绘制在屏幕上,需要创建两个Rect,其实只要明白了这两个Rect的意义并会灵活运用就可以做出不少效果;

第一个Rect 代表要绘制的bitmap 区域,第二个 Rect 代表的是要将bitmap 绘制在屏幕的什么地方

通过Rect来确定区域 然后再来生成bitmap适配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值