【Android開発】色設定の集約方法
各アプリにタブレット向けの設定を反映していく中で、色の設定が各種xml、javaファイル上で直指定している個所が多数あったため、こちらも集約することにしました。
目的
- 色の設定を1つのxmlファイルに集約して管理したい。
- xmlファイルだけでなく、javaファイルからの参照方法も確認したい。
色設定の定義ファイルを追加
アプリ上で使用する色の設定値をまとめて管理するファイルを追加する。
※下記は、実際に「あんざん25」で追加した設定ファイルの一部です。
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- 文字色:通常時 --> <color name="text_normal">#6f5436</color> <!-- 文字色:押下時 --> <color name="text_press">#6f5436</color> <!-- 文字色:非活性時 --> <color name="text_enable">#808080</color> <!-- ボタンの色:通常時 --> <color name="button_normal">#ead7a4</color> <!-- ボタンの色:押下時 --> <color name="button_press">#909090</color> <!-- ボタンの色:非活性時 --> <color name="button_enable">#b0b0b0</color> <!-- グラフの色:通常時 --> <color name="graph_normal">#043c78</color> <!-- グラフの色:目標達成時 --> <color name="graph_achieve">#d70035</color> </resources>
既存のxmlファイルの変更
layoutファイル等、既存のxmlファイルで色を直指定している個所全てを、今回追加した設定値を参照するように変更する。
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="hoge" android:textColor="#6f5436"/>
<TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="hoge" android:textColor="@color/text_normal"/>
Javaファイルからの参照方法
追加した設定値をJavaファイルから参照する場合は、下記のように指定する。
Paint p = new Paint(); p.setColor(Color.parseColor("#6f5436"));
Paint p = new Paint(); Resources r = getResources(); p.setColor(r.getColor(R.color.text_normal));
以上です。