web-dev-qa-db-ja.com

16進数のカラー文字列からカラーを取得する方法

レイアウトの背景色を変更するには、"#FFFF0000"のような16進数の文字列の色を使用します。 Color.HSVToColorは勝者のように見えますが、パラメータとしてfloat[]を取ります。

私はまったく解決策に近いですか?

274
Johann

Colorクラスメソッドを試してください:

public static int parseColor (String colorString)

Androidのドキュメントから

サポートされている形式は次のとおりです。#RRGGBB #AARRGGBB '赤'、 '青'、 '緑'、 '黒'、 '白'、 'グレー'、 'シアン'、 'マゼンタ'、 'イエロー'、 'ライトグレー'、 'ダークグレー'

542
jethro

試してください:

myLayout.setBackgroundColor(Color.parseColor("#636161"));
222
invisbo

この質問は16進数の色に関連する多くの検索のために出てくるので、ここで概要を追加します。

Intからの色

16進数の色はRRGGBBまたはAARRGGBB(アルファ、赤、緑、青)の形式を取ります。私の経験では、intを直接使用するときは、完全なAARRGGBBフォームを使用する必要があります。 RRGGBBの形式しかない場合は、アルファ(透明度)を完全に不透明にするためにFFを前に付けるだけです。これはコードで設定する方法です。先頭に0xを使用すると、16進数であり、10進数ではありません。

int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);

文字列からの色

他の人が指摘したように、あなたはColor.parseStringをそのように使うことができます

int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);

文字列は#で始まらなければならないことに注意してください。 RRGGBBAARRGGBBの両方のフォーマットがサポートされています。

XMLからの色

可能であれば、実際に色をXMLから取得する必要があります。アプリの色を変更するのがはるかに簡単になるため、これは推奨されるオプションです。コード全体に16進数の色をたくさん設定した場合、後でそれらを変更しようとするのは大変な作業です。

Androidのマテリアルデザインには、すでに設定されている16進値とのカラーパレットがあります。

これらのテーマカラーはアプリ全体で使用され、次のようになります。

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <color name="primary">#3F51B5</color>
  <color name="primary_dark">#303F9F</color>
  <color name="primary_light">#C5CAE9</color>
  <color name="accent">#FF4081</color>
  <color name="primary_text">#212121</color>
  <color name="secondary_text">#757575</color>
  <color name="icons">#FFFFFF</color>
  <color name="divider">#BDBDBD</color>
</resources>

追加の色が必要な場合は、xmlで2段階で色を定義することをお勧めします。最初に16進値の色に名前を付けてから、特定の色を取得する必要があるアプリのコンポーネントに名前を付けます。これにより、後で色を調整しやすくなります。繰り返しますが、これはcolors.xmlにあります。

<color name="orange">#fff3632b</color>
<color name="my_view_background_color">@color/orange</color>

その後、色をコードで設定したい場合は、次の操作を行います。

int myColor = ContextCompat.getColor(context, R.color.my_view_background_color);    
myView.setBackgroundColor(myColor);

Androidの定義済み色

Colorクラスには、いくつかの定義済みの色定数があります。こんな感じで使えます。

int myColor = Color.BLUE;
myView.setBackgroundColor(myColor);

他の色は

  • Color.BLACK
  • Color.BLUE
  • Color.CYAN
  • Color.DKGRAY
  • Color.GRAY
  • Color.GREEN
  • Color.LTGRAY
  • Color.Magenta
  • Color.RED
  • Color.TRANSPARENT
  • Color.WHITE
  • Color.YELLOW

ノート

27
Suragch

その文字列をintsetBackgroundColorで使用できるsetTextColor色に変換します

String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);

16は16進数であり、通常の0-9ではないことを意味します。結果は以下と同じになります。

int color = 0xFFFF0000;
21
Bryan Field

それは

int color =  Color.parseColor("colorstring");
14

これを試して:

vi.setBackgroundColor(Color.parseColor("#FFFF0000"));
12
MindBrain

私はこれを使います、そしてそれは私が欲しいどんな色も設定するために私にとって素晴らしい働きをします。

public static final int MY_COLOR = Color.rgb(255, 102, 153);

赤、緑、青それぞれに0〜255を使用して色を設定し、その色を使用する場所にColor.BLUEまたはColor.REDまたはColorクラスが提供する他の静的色の代わりにMY_COLORを配置します。

カラーチャートをGoogleで検索するだけで、0〜255を使用して正しいRGBコードのチャートを見つけることができます。

10
Opy

Res/values/colors.xmlに保存されたXMLファイル:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <color name="translucent_red">#80ff0000</color>
</resources>

このアプリケーションコードはカラーリソースを取得します。

Resources res = getResources();
int color = res.getColor(R.color.opaque_red);

このレイアウトXMLは色を属性に適用します。

<TextView
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:textColor="@color/translucent_red"
    Android:text="Hello"/>
5
AZ_

Xamarinでこれを使う

Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));
4

代わりに0xFFF000を使用してColor.HSVToColorメソッドに渡してください。

4
Dave Long

XMLで色を定義し、それを使用して背景色などを変更する場合は、このAPIが探しているものです。

 ((TextView) view).setBackgroundResource(R.drawable.your_color_here);

私のサンプルでは、​​TestViewに使用しました

3
M.Hefny

短縮Hexコード用

int red = colorString.charAt(1) == '0' ? 0 : 255;
int blue = colorString.charAt(2) == '0' ? 0 : 255;
int green = colorString.charAt(3) == '0' ? 0 : 255;
Color.rgb(red, green,blue);
0
GTID