【问题标题】:android maps v2 polygon transparencyandroid映射v2多边形透明度
【发布时间】:2012-12-28 21:17:46
【问题描述】:

我正在使用适用于 android 的 Google Maps v2 API,但我无法控制 fillColor 的透明度。 我希望能够在填充的多边形下看到地图。 有没有办法做到这一点?

感谢您的帮助!

【问题讨论】:

    标签: android transparency polygons google-maps-android-api-2


    【解决方案1】:

    好吧,让我描述一下标准的 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); //not transparent green color

    在十六进制中,每个通道可以由 2 个十六进制数字指定:

    • 前锋(FF)
    • R(00)
    • 前锋(前锋)
    • B(00)

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

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

    polygon.setFillColor(0x7F00FF00); //half-transparent green color

    所以基本上你需要做的就是使用 alpha 通道值来获得你正在寻找的透明度

    【讨论】:

    • 很好的答案。我还有几个额外的 cmets。我来到这里是因为我在寻找 PolygonOptions 来拥有像 MarkerOptions 这样的 alpha() 方法。并非如此,当您使用两者时,您必须稍微改变一下思路。 (标记没有颜色设置方法。)此外,android.graphics.Color 具有使用 alpha 通道构建颜色的方法,特别是 Color.argb()。
    【解决方案2】:
     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);
    

    【讨论】:

      【解决方案3】:

      基本上对我有用的是:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-15
        • 1970-01-01
        • 1970-01-01
        • 2014-05-29
        • 1970-01-01
        • 2021-09-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多