16進カラー値(#ffffff)を整数値に変換します


89

サーバーから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)機能にAndroidSDKを使用しています。これは、ご想像のとおり、整数の色の値を取ります。

これはこの質問の反対です:Androidでカラー整数を16進文字列に変換する方法は?


なんらかの理由で投稿できません...もうすぐですが、valueOf文字列入力(もちろん#なし)と基数を指定する基数を指定する2つの引数の方法が必要です。 Integer.valueOf(passedColor.substring(1, passedColor.length()), 16) これは、任意の整数基数で実行できます。 download.oracle.com/javase/6/docs/api/java/lang/...、INT)
ty1824

ええ、私も自分の回答を投稿することができませんでした。マイク・サミュエルは、私が言おうとしていることをほとんど言っていました。
2011

回答:


184

本当の答えは使用することです:

Color.parseColor(myPassedColor)Androidのでは、myPassedColorというhexような値#000#000000または#00000000

ただし、この関数、などの短縮16進値をサポートしていません#000


9
残念ながら、inはのような値を解析しません#000ドキュメントを
Alex Semeniuk 2015年

@CQMのように、省略形の16進色を解析する方法#ccc。他に方法はありますか?
Kavita_p

32

答えは本当に単純な人です。Androidでは、16進数の色をintに変換する場合は、AndroidのColorクラスを使用してください。例を以下に示します。

ライトグレー用です

Color.parseColor("#a8a8a8");

それだけで、結果が得られます。


そして、ちょうどそれは使用方法を明確にする:someText.setTextColor(Color.parseColor(「#のf9e6ff」))
ブライアン・M

15
Integer.parseInt(myString.replaceFirst("#", ""), 16) 

2
提案に感謝しますが、私はこれを試しましたが無駄でした。含まれているAndroid関数は、両方ともintを返しますが、機能する唯一の種類の色の結果であることがわかりました。Color.parseColor(myPassedColor))これはAndroid固有の問題だとは思いませんでしたが、問題だったことが
わかり

4
なぜ人々がこれに賛成したのか分かりません。動かない!! ここの色は32ビットで保存されているので、印刷すると長く表示されます。parseIntは、負を示す明示的な `-'を探し、intまたはlongの符号ビットを尊重しません。したがって、それは間違った番号を与えるでしょう。
クリスチャンチャップマン

1
色OPのお得な情報が24ビットでない32ビットであるので@enthdegreeは、OPを引用すると、「私は、このフォームで(サーバから#XXXXXXを進カラー値を受けています。」;何のアルファチャンネルはありません
マイク・サミュエル・

1
@AllDayAmazing、「#」は16進数、符号、または小数点記号でparseIntはないため、入力で見つかった場合は失敗します。
マイクサミュエル

私の間違い、私は自分がしていることに深く根付いているので、すぐにそれを読んで見ましたparseColor()。あなたはとても正しいです。
AllDayAmazing 2014

7

の形で色を見つけたのと同じ問題があり、#AAAAAAそれをandroidが利用できる形に変換したいと思います。0xFFAAAAAAアンドロイドが自動的に色を教えてくれるように使用できることがわかりました。1つ目FFalpha価値を伝えることです。それが役に立てば幸い



3

私も同じ問題に直面していました。このようにして私はそれを解決することができました。CQMが言ったように、Color.parseColor()を使用することはこの問題の良い解決策です。

これが私が使用したコードです:

this.Button_C.setTextColor(Color.parseColor(prefs.getString("color_prefs", String.valueOf(R.color.green))));

この場合、私の目標は、設定(color_prefs)から色の選択を変更するときに、ボタンのテキストの色(Button_C)を変更することでした。



1

文字列で共有設定のカラーコードを取得し、整数に変換してレイアウトの背景色を追加します。

    sharedPreferences = getSharedPreferences(mypref, Context.MODE_PRIVATE);
    String sw=sharedPreferences.getString(name, "");
    relativeLayout.setBackgroundColor(Color.parseColor(sw));

0

これを試して、リソースにドローアブルを作成してください...

<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); xフロート付き0-1Ej(0.9f)

幸運を

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.