android 具有透明总线图像的自定义标记
android custom markers with a transparent Bus image
我正在尝试向我的 Google 地图添加一个透明的公交车标记,但它并没有按照我想要的方式添加,如图所示,GoodOne
我用于标记的图像
但这就是我得到的 thisiswhatiget
它也没有采用总线的精确形状,而是以矩形格式绘制
这是我的主要代码 activity
Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.bus);
Bitmap circle = getCircleBitmap(image, 80);
Marker mMarker = googleMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory.fromBitmap(circle))
.flat(true).anchor(0.25f, 0.25f)
.visible(true)
.position(position));
public static Bitmap getCircleBitmap(Bitmap bmp, int size){
Bitmap thumbnail = ThumbnailUtils.extractThumbnail(bmp, 50, 50);
Bitmap output = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
int color = Color.RED;
Paint paint = new Paint();
Rect rect = new Rect(0, 0, size, size);
RectF rectF = new RectF(rect);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawOval(rectF, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(thumbnail, 15,15, paint);
//thumbnail.recycle();
return output;
}
求助,是不是BITMAP让图片透明度不够?
如果你的drawable(例如bus.png
)有透明背景(这很重要,根据你的结果我认为它有白色背景),你只需要改变PorterDuff
模式为 SRC_OVER
在你的 getCircleBitmap
:
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER));
我正在尝试向我的 Google 地图添加一个透明的公交车标记,但它并没有按照我想要的方式添加,如图所示,GoodOne
我用于标记的图像
但这就是我得到的 thisiswhatiget
它也没有采用总线的精确形状,而是以矩形格式绘制
这是我的主要代码 activity
Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.bus);
Bitmap circle = getCircleBitmap(image, 80);
Marker mMarker = googleMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory.fromBitmap(circle))
.flat(true).anchor(0.25f, 0.25f)
.visible(true)
.position(position));
public static Bitmap getCircleBitmap(Bitmap bmp, int size){
Bitmap thumbnail = ThumbnailUtils.extractThumbnail(bmp, 50, 50);
Bitmap output = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(output);
int color = Color.RED;
Paint paint = new Paint();
Rect rect = new Rect(0, 0, size, size);
RectF rectF = new RectF(rect);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
canvas.drawOval(rectF, paint);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
canvas.drawBitmap(thumbnail, 15,15, paint);
//thumbnail.recycle();
return output;
}
求助,是不是BITMAP让图片透明度不够?
如果你的drawable(例如bus.png
)有透明背景(这很重要,根据你的结果我认为它有白色背景),你只需要改变PorterDuff
模式为 SRC_OVER
在你的 getCircleBitmap
:
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER));