Android Color(Paint中的setColor)需要负整数?

时间:2012-12-20 23:30:03

标签: android

我只是想在Android中绘制/绘制到Canvas。但是,当我使用十六进制值或使用setARGB方法设置颜色时,它不起作用。但是当我使用Color.x(例如,Color.GREEN)时,它可以工作。这是代码:

    Bitmap image = Bitmap.createBitmap(bitmapWidth, bitmapHeight, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(image);
    Paint paintBackground = new Paint();
    int green = Color.argb(0, 0, 255, 0); // 65280 (Won't work)
    green = 0x0000ff00; // 65280 (Won't work)
    paintBackground.setARGB(0, 0, 255, 0);
    green = paintBackground.getColor(); // 65280 (Won't work)
    green = Color.GREEN; // -16711936 (Works!)
    paintBackground.setColor(green);
    green = paintBackground.getColor(); // -16711936
    paintBackground.setStyle(Paint.Style.FILL);
    canvas.drawRect(0, 0, bitmapWidth, bitmapHeight, paintBackground);

所以基本上Color.GREEN返回-16711936 - 这就行了。 但是,十六进制值是65280 - 这不起作用。也就是说,它不会绘制绿色矩形。

我需要使用十六进制值,因为我需要在此处将颜色设置为0x00ffff00,然后再设置为不同的十六进制值。

Android Color(paint中的setColor)是否需要负整数?

3 个答案:

答案 0 :(得分:6)

问题是0x0000ff00不是绿色,而是完全透明绿色。完全不透明的绿色将是0xff00ff00,正如您已经注意到的那样-16711936。同样,使用setARGB时,您需要为alpha指定255,以使颜色完全不透明

答案 1 :(得分:1)

颜色包含4个字段,alpha,red,green和blue。每当任何东西大部分都是不透明的时候都是消极的50.2%透明绿色为正(0x7F00FF00 / 2,130,771,712),49.8%透明绿色为负(0x8000FF00 / -2,147,418,368)

答案 2 :(得分:0)

您也可以致电Color.rgb(0, 255, 0)。使用rgb() alpha默认为255,完全不透明。