具体需求是为生成二维码,为二维码添加背景和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适配