Przede wszystkim android.graphics.Color Jest to ów klasy składające się tylko z metod statycznych. Jak i dlaczego stworzyłeś nowy obiekt android.graphics.Color? (To jest całkowicie bezużyteczne, a sam obiekt przechowuje żadnych danych)
Ale tak czy inaczej ... Mam zamiar założyć używasz jakiś przedmiot, który faktycznie przechowuje dane ...
liczbą całkowitą składa się z 4 bajtów (w java). Patrząc na funkcję getRGB() ze standardowego obiektu java Colour możemy zobaczyć java mapuje każdy kolor na jeden bajt liczby całkowitej w kolejności ARGB (Alpha-Red-Green-Blue). Możemy replikować to zachowanie z niestandardową metodę następująco:
public int getIntFromColor(int Red, int Green, int Blue){
Red = (Red << 16) & 0x00FF0000; //Shift red 16-bits and mask out other stuff
Green = (Green << 8) & 0x0000FF00; //Shift Green 8-bits and mask out other stuff
Blue = Blue & 0x000000FF; //Mask out anything not blue.
return 0xFF000000 | Red | Green | Blue; //0xFF000000 for 100% Alpha. Bitwise OR everything together.
}
Zakłada można jakoś odzyskać indywidualny czerwony, zielony i niebieski kolor elementów, a wszystkie wartości zdałeś się na kolorach są 0-255.
Jeśli wartości RGB są w postaci procentu pływaka między 0 a 1 Rozważmy następujący sposób:
public int getIntFromColor(float Red, float Green, float Blue){
int R = Math.round(255 * Red);
int G = Math.round(255 * Green);
int B = Math.round(255 * Blue);
R = (R << 16) & 0x00FF0000;
G = (G << 8) & 0x0000FF00;
B = B & 0x000000FF;
return 0xFF000000 | R | G | B;
}
Jak inni stwierdzili, jeśli używasz standardowego obiektu java, wystarczy użyć getRGB ();
Jeśli zdecydujesz się skorzystać z android klasę koloru właściwie można to zrobić również:
int RGB = android.graphics.Color.argb(255, Red, Green, Blue); //Where Red, Green, Blue are the RGB components. The number 255 is for 100% Alpha
lub
int RGB = android.graphics.Color.rgb(Red, Green, Blue); //Where Red, Green, Blue are the RGB components.
jak inni stwierdzili ... (druga funkcja zakłada 100% alfa)
Obie metody w zasadzie robią to samo, co pierwsza metoda stworzona powyżej.
to wygląda na ten sam problem: http://stackoverflow.com/questions/6926644/android-color-to-int-conversion – TravJenkins
Skąd Twój obiekt pochodzi kolor ? Jestem zdezorientowany, dlaczego przekazujesz obiekt Colour zamiast int reprezentujący kolor w pierwszej kolejności. Klasa kolorów w systemie Android definiuje statyczne metody tworzenia i konwersji kolorów int. Z mojego rozumienia tego nie powinienem być inicjowany –