本文主要介紹下java Color對象中的alpha值。java
java/awt/Color.javaandroid
/** * Creates an opaque sRGB color with the specified red, green, * and blue values in the range (0 - 255). * The actual color used in rendering depends * on finding the best match given the color space * available for a given output device. * Alpha is defaulted to 255. * * @throws IllegalArgumentException if <code>r</code>, <code>g</code> * or <code>b</code> are outside of the range * 0 to 255, inclusive * @param r the red component * @param g the green component * @param b the blue component * @see #getRed * @see #getGreen * @see #getBlue * @see #getRGB */ public Color(int r, int g, int b) { this(r, g, b, 255); } /** * Creates an sRGB color with the specified red, green, blue, and alpha * values in the range (0 - 255). * * @throws IllegalArgumentException if <code>r</code>, <code>g</code>, * <code>b</code> or <code>a</code> are outside of the range * 0 to 255, inclusive * @param r the red component * @param g the green component * @param b the blue component * @param a the alpha component * @see #getRed * @see #getGreen * @see #getBlue * @see #getAlpha * @see #getRGB */ @ConstructorProperties({"red", "green", "blue", "alpha"}) public Color(int r, int g, int b, int a) { value = ((a & 0xFF) << 24) | ((r & 0xFF) << 16) | ((g & 0xFF) << 8) | ((b & 0xFF) << 0); testColorValueRange(r,g,b,a); }
java裏頭的color不指定alpha的話,默認其值爲255,也就是沒有透明度。ide
color對象裏頭的alpha實際上是指不透明度,其值範圍爲0-255,越大越不透明。
其一般對應opacity,這個就是單詞語義表達的不透明度,其值範圍[0,1.0f],值越大,越不透明。this
opacity與alpha之間的主要關係列表以下spa
100% — FF 95% — F2 90% — E6 85% — D9 80% — CC 75% — BF 70% — B3 65% — A6 60% — 99 55% — 8C 50% — 80 45% — 73 40% — 66 35% — 59 30% — 4D 25% — 40 20% — 33 15% — 26 10% — 1A 5% — 0D 0% — 00
這個怎麼轉義呢,以下code
int alpha = Math.round(opacity * 255);
再將int輸出爲十六進制的表示方式component
String hex = Integer.toHexString(alpha).toUpperCase(); if (hex.length() == 1){ hex = "0" + hex; }
不足兩位往前不零對象