2016-07-02 4 views
2

intカラーをrgbバイト配列に変換したい。私はColorPickerDialog(ColorPickerDialog)を使用しています。Java AndroidスタジオカラーIntからバイト

色を選択すると(青色と言えば)、整数値-16775425が得られます。

これは、16進数で0xFF 00 06 FFに従います。

私の知るとおりに:赤:0x0、緑:0x06、青:0xFF。私がMS-Paint(0006FF)でテストすれば、私は青い色を得るでしょう。私は次のコードでバイト配列に整数値をconverteしようとした場合

public byte [] getColorByte(int color1){ 
    byte[] color = new byte[3]; 
    color[2] = (byte) (color1 & 0xFF); 
    color[1] = (byte) ((color1 >> 8) & 0xFF); 
    color[0] = (byte) ((color1 >> 16) & 0xFF); 
    return color; 

私は[0,6、-1]でバイト配列を取得します。

しかし、私はColor.rgb機能を持つボタンの背景色を設定したい場合:

btn.setBackgroundColor(Color.rgb(getColorByte(color1)[0],getColorByte(int color1)[1],getColorByte(int color1)[2])); 

を私は白のボタンを取得します。

私の考えでは、問題は255 = FF!= -1です。あれは正しいですか? 整数をRGB値に分割するにはどうすればよいですか? (3バイト配列)。

ありがとうございました!

はFYI:私は、整数と背​​景色を変更することができることを知っているが、私はあなたの2番目の質問(intgerに戻し、配列の変換について1に答えるために

+1

カラー配列を 'byte []'ではなく 'int []'として保存して、負の数を取得しないようにしてください。 –

+0

ありがとう、別の質問:どのように[0,6、-1]バイト配列から-16775425 Int値に戻すことができますか?ありがとう!! –

答えて

0

:-) RGB配列を取得したいです)次のコード:

int answer = color[2]; 
answer += color[1] << 8; 
answer += color[0] << 16; 

これは基本的にあなたの操作を逆にします。

+0

ありがとう!しかし、私がこのように収束すれば、正の整数を得るでしょう。否定的ではありません..署名された値を取得する方法はありますか? –

+0

テストしましたか?それはまだ負の出力でなければならない –

+0

はい、私はそれをtestet ..うーん –

関連する問題