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));