2013-01-14 46 views
4

我正在使用Google Maps v2 API for android,但我無法控制fillColor的透明度。 我希望能夠看到填充多邊形下的地圖。 有沒有辦法做到這一點?android maps v2多邊形透明度

感謝您的幫助!

回答

14

好了,讓我描述4個字節顏色如何標準編碼:

標準像素顏色由4個字節:

  • A(alpha通道) - 0-255(0 - 完全透明, 255 - 完全不透明)
  • R(紅色通道) - 0-255
  • G(綠色通道) - 0-255
  • B(藍色通道) - 0-255

每個通道代表特定顏色部分的飽和度。因此,如果我們需要創建一個完全不透明的紅色,我們需要指定以下通道值:

  • 255,255,0,0

如果我們想讓它半透明的,我們需要劃分2(2分之255= 127)的Alpha通道值:

  • 127,255,0,0

因此,讓我們回到了Android。在Android中在大多數情況下可以通過指定它的十六進制值來指定顏色:

polygon.setFillColor(0xFF00FF00); //not transparent green color

在十六進制的每個信道可以由2個十六進制數字來指定:

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

如果你想使這個顏色半透明的,你需要劃分FF 2:

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

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

所以基本上你需要做的是什麼 - 是爲了與Alpha通道值打以獲得透明度,您正在尋找

+0

謝謝你的幫助! – user1978464

+0

很棒的回答。我有幾個額外的評論。我來到這裏是因爲我正在尋找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); 
相關問題