カスタマイズ

【Android Studio】Color クラス・Resources 色の指定方法まとめ

 

Android 開発をしていると、java ファイル側でテキストやボタンの色を変えたい場合があると思います。

例えばクイズアプリを作る場合

  • 正解なら文字を青くする
  • 不正解なら文字を赤くする

などプログラム側で色を切り替えることがあります。
 

今回は、このような時に使える「Colorクラス・Resources を使った色の指定方法」を紹介します。

紹介するのは

  • Color クラス定義済みの色
  • RGB
  • ARGB
  • HEX
  • colors.xml から取得
  • Android リソースから取得

の6種類です。

 


 

開発環境

Android Studio 3.4
Android Emulator Nexus 4 (API 27)

minSdkVersion 15
compileSdkVersion 28
 

このサンプルでは、色を変更する TextView を activity_main.xml に用意しました。

<TextView
    android:id="@+id/myText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    android:textSize="32sp" />

 

この TextView の文字を青色に変更していきます。

デフォルト
変更後

 
 

色の指定方法

Color クラスを使う

定義済みの色

Color クラスには、黒・白・赤などの一般的な色は簡単に使えるように定義されています。

例えば「青」を使いたい場合は Color.BLUE と指定することができます。

TextView myText = findViewById(R.id.myText);
myText.setTextColor(Color.BLUE);

 

定義済みの色を使う場合は「Color.色の名前」と指定してください。

定義済みの色

  • BLACK
  • BLUE
  • CYAN
  • DKGRAY
  • GRAY
  • GREEN
  • LTGRAY
  • MAGENTA
  • RED
  • TRANSPARENT(透明)
  • WHITE □
  • YELLOW

 
 

RGB

RGB形式で色を指定する場合は Color.rgb(int red, int green, int blue) と書きます。

TextView myText = findViewById(R.id.myText);
myText.setTextColor(Color.rgb(0, 0, 255));

 
 

ARGB

RGB形式に加えて透過度を指定する場合は Color.argb(int alpha, int red, int green, int blue) と書きます。

TextView myText = findViewById(R.id.myText);
myText.setTextColor(Color.argb(50, 0, 0, 255));

透過度を50にすると、このような色になります。


 
 

HEX

#0000ff のような HEX 値で色を指定する場合は Color.parseColor(String colorString) と書きます。

TextView myText = findViewById(R.id.myText);
myText.setTextColor(Color.parseColor("#0000ff"));

 
 

colors.xml から取得

次は colors.xml ファイルに自分で色を定義して使う方法です。

プロジェクトで何度も使用する色は colors.xml に定義しておくとコードの管理が簡単になるのでオススメです。
 

Android Studio 画面左側のプロジェクト構造にある app → res → values → colors.xml を開きます。

colors.xml を開いたら、使いたい色を定義します。(7行目)

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#008577</color>
    <color name="colorPrimaryDark">#00574B</color>
    <color name="colorAccent">#D81B60</color>

    <color name="myColor">#0000ff</color>
</resources>

 
 

java ファイル側で colors.xml から色を取得する場合は getResources().getColor(R.color.myColor) と書きます。

TextView myText = findViewById(R.id.myText);
myText.setTextColor(getResources().getColor(R.color.myColor));

 
 

Android リソースから取得

Android には標準で用意されているリソースがあり、色もたくさん用意されています。「標準で用意されているリソース」というと分かりにくいかもしれませんが、先ほど使用した colors.xml の Android デフォルト版といった感じです。

Android リソースの色を使う場合は android.R.color.色の名前 で指定できます。

TextView myText = findViewById(R.id.myText);
myText.setTextColor(getResources().getColor(android.R.color.holo_blue_dark));

 

色のサンプル

  • holo_blue_light
  • holo_red_light
  • holo_orange_light
  • holo_purple
  • link_text_holo_dark

 

その他の色は https://developer.android.com/reference/android/R.color#summary を参照してください。
 
 

まとめ

以上が Color クラス・Resources を使った色の指定方法でした。

どれを使えば良いのか悩まれる方もいるかもしれませんが、どれを使っても問題ありません。

個人的には colors.xml に定義する方法をお勧めします。

rgb や hex で指定すると

  • どんな色を指定したか直感的に分からない
  • 複数の箇所に使用すると、後から変更が面倒

というデメリットがあります。

一方 colors.xml に定義すると、java ファイル側で使用した時にコードの横に小さく色のサンプルが表示されます。


 

コードを修正したり、見直す時に結構便利な機能なので、迷った時は colors.xml を使うのが良いかと思います🙂
 

まとめコード

TextView myText = findViewById(R.id.myText);
myText.setTextColor(Color.BLUE);
myText.setTextColor(Color.rgb(0, 0, 255));
myText.setTextColor(Color.argb(50, 0, 0, 255));
myText.setTextColor(Color.parseColor("#0000ff"));
myText.setTextColor(getResources().getColor(R.color.myColor));
myText.setTextColor(getResources().getColor(android.R.color.holo_blue_bright));

 

ABOUT ME
Sara
Sara
「わかりやすく・シンプル」をモットーに、携帯アプリ・ウェブアプリの作り方を紹介します。 独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています🙂
独学は難しそうと感じたら

 
独学でプログラミングを勉強するのは難しそう、効率的にプログラミングを学びたいという方はオンラインスクールがオススメです。

オンラインスクールを選ぶときのポイント

  • 無料体験があること
  • 個別サポートがあること

自分にあったスタイルを見つけるために、無料体験のご利用をオススメします。(無料体験後に自分には合わないなと感じたらハッキリ断ってしまって問題ありません!)
 
個別サポートもプログラミング学習に挫折しないために重要なポイントです。エラーや困った時にすぐに個別対応をしてくれるスクールを利用して下さい。

ここでは3つのオンラインスクールを紹介します。
全て無料体験がありますので、ぜひ自分に合ったスクールを見つけてみて下さい🙂
 

1. TechAcademy(テックアカデミー)

オンライン完結で勉強できるスクールで、コースがとても充実しています。チャットで質問すればすぐに回答を得られるのが一番のおすすめポイントです。
オリジナルのサービスやアプリの開発もサポートしてくれるので、開発したいものが決まっている人にもオススメです。

無料体験はこちら

2. CodeCamp(コードキャンプ)

一対一で受講できる個別指導のプログラミングスクールです。
Webデザイン・Webサービス開発・アプリ開発などを幅広く学習することができます。
マンツーマンなので自分のペースで学習できて、質問もその都度できるのがメリットです。

無料体験レッスンはこちら

3. Treehouse

英語でも良い、英語とプログラミングを同時に勉強したいという方は Treehouse がオススメです。月25ドルで始めることができて、たくさんのプログラミング言語を学ぶことができます。
個別サポートはありませんが、掲示板が充実しています。ほとんどの場合、質問してから30分程度で回答を得ることができます。

7日間の無料体験はこちら

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です