Androidアプリを作る際にはレイアウトや文字、画像データなどをリソースとして扱います。文字などは直接コード中に定義することもできますが、リソースとしてまとめて定義しておくと便利です。
今回はAndroid studioでリソースを管理する方法を解説します。
リソースを置く場所
Androidのリソースはすべて「res」という名前のフォルダに置かれます。さらに、そのresフォルダの中に「layout」や「string」といったフォルダがあり、リソースの種類によって分けて置くことができます。resフォルダはAndroid Studioのプロジェクトビューから確認できます。
リソースはresフォルダに直接置くことはできません。必ず、resフォルダの中にあるいずれかのフォルダに置くようにしましょう。
リソースの種類
文字列と数値
文字列や数値もリソースとして扱います。コード中に直接記入しても問題はありませんが、まとめてリソースとして定義しておいたほうが楽です。同じ文字列を複数個所で使う場合、1つ1つ直接定義すると修正する際はそのすべてを修正する必要があります。
リソースとして定義しておくと、修正する場合は元となるリソースを修正すればそれを使っている場所もすべて修正されるので、かなり楽になります。
文字列や数値はxmlで記述されます。xmlファイルはresフォルダの中にある「values」フォルダに置きます。
レイアウト
アプリの画面であるレイアウトもリソースとして定義されます。レイアウトはxmlで記述され、resフォルダの中のlayoutというフォルダに置きます。
画像
アプリに表示する画像やアプリのアイコンとして使われる画像です。resフォルダの中のdrawableフォルダかminmapフォルダに置きます。基本的にはアプリのアイコンはminmapフォルダに置き、他の画像をdrawableフォルダに置くことが推奨されています。
リソースの使い方
リソースにはそれぞれ個別のIDが割り振られるので、レイアウトファイルなどでリソースを使う場合はそのIDを使います。
実際にリソースを使って説明したいと思います。Android Studioのプロジェクトを新規で作成すると、画面に「Hello, World」と表示されます。レイアウトファイル(activity_main.xml)のその部分のコードは以下のようになっています。
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" android:id="@+id/textView" />
画面に文字を表示するビューであるTextViewを使っています。「android:text」の部分に表示したい文字列が入力されています。この場合は「Hello World!」と直接記述されていますが、この部分をリソースファイルで表現してみようと思います。
まず、resフォルダの中のvaluesフォルダにある「strings.xml」を開きます。リソースファイルはいくつか種類があり、文字列の定義はこの「strings.xml」に記述します。strings.xmlの中身は初期だと以下のようになっています。
<resources> <string name="app_name">Test</string> </resources>
XMLファイルに値を定義する際はその種類によってタグを使い分けます。タグには以下のようなものがあります。
タグ | 意味 |
---|---|
string | 任意の文字列 |
dimen | 単位付きの数字(画面サイズなど) |
color | 文字や背景の色 |
style | UIの色や文字サイズといった属性 |
今回は文字列を定義するので「string」というタグで囲います。このタグの「name」という属性で、このリソースのIDを定義します。それでは、strings.xmlを以下のように書き換えてください。
<resources> <string name="app_name">Test</string> <string name="sample_string">Hello World!</string> </resources>
「Hello World!」という1文を追加しました。文字列の場合は「string/name属性の値」がIDになるので、この1文で「string/sample_string」というIDを持つ「Hello World!」という文字列のリソースが追加されたことになります。
このリソースを使うにはコード中でIDを呼び出すだけです。activity_main.xmlのTextViewの定義を以下のように書き換えましょう。
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/sample_string" android:id="@+id/textView" />
「android:text」の部分を見てください。表示される文字列を直接定義するのではなく、string/sample_stringというIDを記述し、文字列リソースを呼び出す事で文字列をセットしています。このアプリを実行すると以下のようになります。
基本的には他のリソースも同様に呼び出します。例えばcolorというタグで囲った色の情報を表すリソースを呼ぶ場合は「@color/name属性で定義した名前」になります。
【おすすめ記事】
➡Android(アンドロイド)アプリ開発を学べるスクール15選
➡Android(アンドロイド)アプリの本・参考書の評判
➡【Android入門】アプリ開発環境「Android Studio」のインストール方法
➡【Android入門】Android Studiodedeアプリの画面を作成しよう!
➡【Android入門】ボタンの実装の仕方