安卓地图v2多边形透明度

8
我正在使用Google Maps v2 API for Android,但是我无法控制fillColor的透明度。我希望能在填充的多边形下看到地图。有办法可以实现吗?
谢谢您的帮助!
3个回答

20

让我来描述一下标准的4字节颜色编码:

标准像素颜色由4个字节组成:

  • A(Alpha通道)- 0-255(0-完全透明,255-完全不透明)
  • R(红色通道)- 0-255
  • G(绿色通道)- 0-255
  • B(蓝色通道)- 0-255

每个通道表示特定颜色部分的饱和度。因此,如果我们需要创建完全不透明的红色,我们需要指定以下通道值:

  • 255,255,0,0

如果我们想要半透明效果,我们需要将 alpha 通道的值除以2(255/2 = 127):

  • 127,255,0,0

现在回到 Android。在大多数情况下,你可以通过指定十六进制值来指定颜色:

polygon.setFillColor(0xFF00FF00); // 完全不透明的绿色

在十六进制中,每个通道可以由两个十六进制数字表示:

  • A(FF)
  • R(00)
  • G(FF)
  • B(00)

如果你想让这个颜色半透明,需要将 FF 除以2:

0xFF/2 = 0x7F //the same as 255/2 = 127

polygon.setFillColor(0x7F00FF00); //半透明绿色

基本上你需要做的就是调整alpha通道的值,以获得所需的透明度。


很好的答案。我有一些额外的评论。我来这里是因为我正在寻找PolygonOptions是否有一个像MarkerOptions一样的alpha()方法。它没有,所以当你使用这两个选项时,你必须稍微调整一下思路。(标记没有颜色设置方法。)此外,android.graphics.Color有用于构建带有alpha通道的颜色的方法,具体来说是Color.argb()。 - Phil

4
 cir=map.addCircle(new CircleOptions().center(new LatLng(10.938341, 76.9548734))
.radius(150)
.strokeColor(Color.rgb(0, 50, 100))
.strokeWidth(5)
.fillColor(Color.argb(20, 50, 0, 255)) 
.zIndex(55));

 cir.setVisible(true);

1
基本上对我有用的是:

  polygon = mGoogleMap.addPolygon(new PolygonOptions().
        addAll(points)
            .fillColor(0x33FF0000)
             .strokeColor(Color.RED)
               .strokeWidth(3))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接