您好我想创建一个圆形图像女巫有一个小边框和内部加载用户个人资料图片,就像谷歌加Android应用程序一样。 问题是我需要将该图像设置为Button的可绘制顶部,所以我找到了这段代码:
public BitmapDrawable putOverlay(Bitmap bitmap, Bitmap overlay) {
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG);
canvas.drawBitmap(overlay, 0, 0, paint);
return new BitmapDrawable(bitmap);
}
女巫应该将一个位图(用户pic)覆盖在另一个位图(椭圆形)上,但想到的是a)圆形位图在用户的个人资料图片上,并且b)用户的个人资料图片太大。 关于如何做到这一点的任何建议或者如果我至少以正确的方式,我们非常感谢。
更新
我已设法使用此代码显示两个图像:
public BitmapDrawable putOverlay(Bitmap bitmap, Bitmap overlay) {
int width = overlay.getWidth()-50;
int height = overlay.getHeight()-50;
Bitmap b = Bitmap.createScaledBitmap(bitmap, width, height,true);
Canvas canvas = new Canvas(overlay);
canvas.save();
canvas.translate(width,height);
Matrix matrix = new Matrix();
canvas.drawBitmap(overlay, matrix, null);
canvas.restore();
canvas.drawBitmap(b,matrix, null);
BitmapDrawable completeImage = new BitmapDrawable(getResources(),overlay);
return completeImage;
}
问题是轮廓图像没有与圆形图像对齐。就像轮廓图像是从相同的x,y位置绘制的,绘制了圆形图像。
另请注意,个人资料图片使用以下方式加载:
bitmap = BitmapFactory.decodeStream((InputStream) new URL(imagepath).getContent());
答案 0 :(得分:1)
使用此代码(首先缩放个人资料图片然后应用叠加层)
public BitmapDrawable putOverlay(Bitmap bitmap, Bitmap overlay) {
Bitmap b = Bitmap.createScaledBitmap(bitmap, overlay.getWidth(), overlay.getHeight(),true);
Canvas canvas = new Canvas(b);
Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG);
canvas.drawBitmap(overlay, 0, 0, paint);
return new BitmapDrawable(b);
}
我没有完全理解你在问题中的意思,即叠加层位于个人资料图片
之上