缺少API的功能 - Color.RBGtoHSV

时间:2014-11-02 21:01:38

标签: java android colors

我试图在Android java中将RGB颜色转换为HSV。我查找了API文档,发现有一个内置功能可以做到这一点,但我似乎无法让它实际工作。 Android Studio不承认它存在(显示红色,没有自动完成),因此不会参考它来编译程序。我已经包含了将语句导入android.graphics.*

API参考是here

我试过的代码如下:

//First attempt
Color test = new Color();
test.RGBtoHSV(rgbcolor, hsvreturn);

//Second attempt
android.graphics.Color.RGBtoHSV(rgbcolor, hsvreturn);

//Third attempt
Color.RGBtoHSB(rgbcolor, hsvreturn);

2 个答案:

答案 0 :(得分:0)

看起来您的方法签名错误。

应该是:

RGBToHSV(int red, int green, int blue, float[] hsv)

请参阅:http://developer.android.com/reference/android/graphics/Color.html#RGBToHSV(int,%20int,%20int,%20float[])

除非你是在追求这个?

colorToHSV(int color, float[] hsv)

请参阅:http://developer.android.com/reference/android/graphics/Color.html#colorToHSV(int,%20float[])

请注意,这两种方法都是静态的

在我的Android Studio中,两者都可以正常工作。

答案 1 :(得分:0)

使用此功能的正确方法是:

int rgb = 0xFF0000; //red

//Same but different
//int rgb = Color.RED;

float[] hsv = new float[3];

Color.RGBToHSV(Color.red(rgb),  Color.green(rgb), Color.blue(rgb), hsv);

另一种(更好的)方法是使用colorToHSV:

int rgb = 0xFF0000; //red

float[] hsv = new float[3];

Color.colorToHSV(rgb, hsv);

我建议你下次阅读API参考资料;)

评论后更新:

我发现了一些你需要改变的事情:

  1. 您的班级没有近距离。

  2. 像你这样的代码语句需要在函数或构造函数中。

  3. 缺少进口。

  4. 这将是您要寻找的代码:

    import android.graphics.Color;
    
    public class LibraryClass {
    
        public static void yourFunction() {
    
            int rgb = Color.RED;
    
            // This also works
            // int rgb = 0xFF0000;
    
            float[] hsv = new float[3];
    
            Color.colorToHSV(rgb, hsv);
        }
    }