2014-11-02 68 views
0

我想在Android java中將RGB顏色轉換爲HSV。我查閱了API文檔,發現有一個內置函數可以做到這一點,但我似乎無法讓它實際工作。 Android Studio不會確認它存在(顯示爲紅色,不會自動完成),因此將不會編譯引用該程序的程序。我已包括進口陳述到android.graphics.*從API中丟失的功能 - Color.RBGtoHSV

的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); 

回答

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. 缺少進口。

這將是你在尋找的代碼:

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); 
    } 
} 
+0

我讀過API,我添加到調用中的變量只是佔位符。即使使用你的代碼,我仍然會以紅色顯示而不是編譯。如這裏所見。 http://imageshack.com/a/img538/6905/cEnEyM.png – jskrwyk 2014-11-02 21:31:15

+0

發現你的問題,將更新我的答案! – 2014-11-02 21:38:56

+0

@JamesKrawczyk可以更新的答案解決您的問題? – 2014-11-02 21:44:30

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中都工作得不錯,我。

+0

Siriously這是100的時間就在今天正好有人把我的答案,並得到一個給予好評? – 2014-11-02 21:25:25

+0

@RolfSmit我沒有高興他們。你的回答比較完整,雖然仍然不能解決我的問題:( – jskrwyk 2014-11-02 21:30:23

+0

@Rolf Smit - 你的回答在我回答的時候還沒有發佈,在指責別人複製你之前看時間戳。 – Philio 2014-11-02 21:58:13