サーバーから16進数の色の値を受け取ります(この形式では、黒の場合は_#xxxxxx
_、例では_#000000
_)
これを整数値に変換するにはどうすればよいですか?
Integer.valueOf("0x" + passedColor.substring(1, passedColor.length()))
を実行してさらに極端な_0x000000
_の結果を取得しようとしましたが、これはint
として解釈されません。他の提案はありますか?
エラーが表示されます:08-03 21:06:24.673: ERROR/AndroidRuntime(20231): Java.lang.NumberFormatException: unable to parse '0x00C8FBFE' as integer
setBackgroundColor(int color)
関数にAndroid SDKを使用しています。これは、ご想像のとおり、整数のカラー値を取ります。
これはこの質問の反対です: Androidで色整数を16進文字列に変換する方法?
本当の答えは以下を使用することです:
Color.parseColor(myPassedColor)
Androidでは、myPassedColor
は#000
または#000000
または#00000000
のようなhex
値です。
ただし、この関数 略式の16進値はサポートしません#000
など。
Integer.parseInt(myString.replaceFirst("#", ""), 16)
Androidで16進数の色をintに変換する場合は、Android Color class、以下に示す例
これは明るい灰色の色です
Color.parseColor("#a8a8a8");
それだけで、結果が得られます。
私は#AAAAAA
の形でいくつかの色を見つけたのと同じ問題があり、それをAndroidが利用できる形に変換したい。 0xFFAAAAAA
Androidが自動的に色を伝えることができます。最初のFF
がalpha
値を伝えていることに注意してください。
私は同じ問題に直面していました。この方法で私はそれを解決することができました。 CQMが言ったように、Color.parseColor()を使用することはこの問題の良い解決策です。
私が使用したコードは次のとおりです。
this.Button_C.setTextColor(Color.parseColor(prefs.getString("color_prefs", String.valueOf(R.color.green))));
この場合、私の設定(color_prefs)から色の選択を変更するときに、ボタンのテキストの色(Button_C)を変更することが目標でした。
本当の答えは、これが最も簡単で簡単なことです....
String white = "#ffffff";
int whiteInt = Color.parseColor(white);
[〜#〜] cqm [〜#〜] の answer および ovokerie-ogbeta の answer to別の質問 私はこの解決策を思いつきました:
if (colorAsString.length() == 4) { // #XXX
colorAsString = colorAsString.replaceAll("#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])", "#$1$1$2$2$3$3");
}
int color = Color.parseColor(colorAsString);
これを試して、リソースにドロアブルを作成してください...
_<shape xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<solid Android:color="@color/white"/>
<size Android:height="20dp"
Android:width="20dp"/>
</shape>
_
次に使用...
_ Drawable mDrawable = getActivity().getResources().getDrawable(R.drawable.bg_rectangle_multicolor);
mDrawable.setColorFilter(Color.parseColor(color), PorterDuff.Mode.SRC_IN);
mView1.setBackground(mDrawable);
_
色付き... "#FFFFFF"
色が透明の場合... setAlpha
mView1.setAlpha(x);
with x float 0-1 Ej(0.9f)
幸運を