まず、android.graphics.Color は静的メソッドのみで構成されるクラスです。新しい android.graphics.Color オブジェクトを作成した方法と理由を教えてください。(これはまったく役に立たず、オブジェクト自体にはデータが保存されません)
とにかく...実際にデータを保存するオブジェクトを使用していると仮定します...
整数は 4 バイトで構成されます (Java の場合)。標準の Java Color オブジェクトの関数 getRGB() を見ると、Java が各色を ARGB (アルファ - 赤 - 緑 - 青) の順序で整数の 1 バイトにマップしていることがわかります。次のように、カスタム メソッドを使用してこの動作を再現できます。
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.
}
これは、赤、緑、青の各色コンポーネントを何らかの方法で取得でき、色に渡したすべての値が 0 ~ 255 であることを前提としています。
RGB 値が 0 から 1 の間の float パーセンテージの形式である場合は、次の方法を検討してください。
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;
}
他の人が述べているように、標準の Java オブジェクトを使用している場合は、getRGB(); を使用してください。
Android カラークラスを適切に使用する場合は、次のこともできます。
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
また
int RGB = android.graphics.Color.rgb(Red, Green, Blue); //Where Red, Green, Blue are the RGB components.
他の人が述べているように...(2番目の関数は100%のアルファを想定しています)
どちらのメソッドも、基本的に、上記で作成した最初のメソッドと同じことを行います。