リソース

レイアウトリソース

リソースとは?

 状態:-  閲覧数:2,958  投稿日:2013-04-16  更新日:2014-03-24  
Resource
・事前に作成しておいた「画面レイアウトXMLファイル」や、「画像データ」など、プログラムファイル以外のもの
・色、文字列、フォントサイズ、画像などのデータを、外部ファイル(リソース)として定義
・状態に応じてそれらを利用


リソースの種類


2種類
1.アプリケーションリソース
2.ストレージリソース

1.アプリケーションリソース
・Android プロジェクトの res ディレクトリに格納する各種リソース

2.ストレージリソース
・内蔵メモリに保存されるデータへのインタフェース群

アプリケーションリソースの種類

 閲覧数:470 投稿日:2013-04-17 更新日:2014-03-24 

Resource Types


Android プロジェクトの res ディレクトリに格納する各種リソース

全8種類
種類 場所 説明 ファイル例
1 Animation res/anim/ Tween アニメーションを定義したXMLファイル。フレームアニメーションは「res/drawable/」ディレクトリ -
2 Color res/color/ ビューの状態に応じカラーリストを定義したXMLファイル。単なる色の定義は「res/values/」ディレクトリ -
3 Drawable res/drawable/ 画像ファイル(.pngなど)や形状などを定義したXMLファイル。 デフォルトでディレクトリは「res/drawable-hdpi」「res/drawable-mdpi」「res/drawable-ldpi」に分かれている。※端末の画面サイズや解像度によって使用される画像の種類を変更したい場合に利用 ic_launcher.png
4 Layout res/layout/ アクティビティで利用する「画面レイアウトを定義したXMLファイル」 main.xml、test1_1.xml
5 Menu res/menu/ アプリケーションのメニューを定義したXMLファイル strings.xml
6 String res/values/ 文字列、文字列の配列、文字列の複数形を定義したXMLファイル -
7 Stylel res/values/ 画面に配置される部品のスタイルを定義したXMLファイル -
8 その他 res/values/ BoolやColor、Integerなどの値を定義したXMLファイル -
Animation Resources
・UIアニメーションをXMLで定義
・Tween アニメーション(移動、拡大縮小など)を扱う

Color Resources
・アプリ内で利用する、色のリソース
・カラーコードに名前を振って、アプリ内で共有することが可能
・Drawable Resources 同様、XML 形式で、View の状態に応じた色の定義をすることが可能

Drawable Resources
・アプリ内で利用するグラフィックリソース
・png 等の画像ファイルの他、XML で簡単なグラフィックを書いたり、UI の状態(押された、選択された、フォーカスされた、通常)ごとのグラフィックの対応付けを書いたりしたもの
・9パッチと呼ばれる特殊なフォーマットにも対応しているため、柔軟なUIパーツを作ることが可能

Menu Resources
・メニューキーで呼ばれるメニューや、長押しで呼ばれるメニューを定義
・メニューに表示する文言やアイコンなどを定義

String Resources
・アプリ内で利用する文言などの文字列を、XML に分離して書き出す
・文言フォーマットを定義することも可能
・Java コードに埋め込むのではなく、XML に分離して書きだしておくことが推奨されている(多言語化対応が容易になる)

Style Resources
・UIスタイルを定義

リソースを定義 … 文字列

 閲覧数:399 投稿日:2013-05-27 更新日:2014-01-10 

strings.xml


・Eclipseで、Androidアプリケーションを作成すると、文字列を定義するリソースファイル「res/values/strings.xml」が自動生成される
・リソースファイルは、resourcesという要素をルート要素とするXML
<?xml version="1.0" encoding="utf-8"?>
<resources>
</resources>



リソース名指定


・ひとつの文字列は、ひとつのstring要素によって定義される
・定義したい文字列を要素の内容として書き、その文字列に与えたい名前を、name属性として記述
・下記例では、「message1」「message2」は、何れもリソース名
▼res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="message1">メッセージ1</string>
<string name="message2">メッセージ2</string>

</resources>


・これ以降リソース名は、リソースを参照する際などに利用していく

リソースを定義すると、Rクラスにリソースを参照するためのIDが自動生成される

 閲覧数:503 投稿日:2013-05-27 更新日:2014-01-16 

概要


・リソースを定義すると、R.javaファイルのRクラスに「リソースを参照するためのID(リソースID)」が自動生成される

リソースIDとは?
・プロジェクトに設置したリソースをプログラムの中から利用するため、各リソースに割り当てられた番号( int型の値 )
・リソースIDは「R.java」ファイルで管理される
・リソースIDの割り当てはリソースの種類によって異なる

R.javaファイルとは?
・初めてプロジェクトをビルドした際作成され、その後ビルドが行われる度、自動的に更新されていく特別なファイル

R.javaファイルの特徴
・クラス毎に、リソース名の順番で自動記述
・リソースIDもクラス毎に自動採番号していく
※ユーザーはリソースの追加だけを行っておけば、リソースに対するID管理などを行う必要はない

R.javaファイルはどこにあるの?
・プロジェクト名/gen/パッケージ名/R.java

デフォルトで作成される「R.java」ファイル
・drawableクラスは「0x7f02」番台。stringクラスは「0x7f04」番台というように、予め決められている
/* AUTO-GENERATED FILE.  DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found.  It
* should not be modified by hand.
*/

package e1blue.androidstyle.hello;

public final class R {
   public static final class attr {
   }
   public static final class drawable {
       public static final int ic_launcher=0x7f020000;
   }
   public static final class layout {
       public static final int main=0x7f030000;
   }
   public static final class string {
       public static final int app_name=0x7f040001;
       public static final int hello=0x7f040000;
   }
}

クラス リソース名 リソースID 内容記述ファイル
attr
drawable ic_launcher 0x7f020000
layout main 0x7f030000 /res/layout/main.xml
4 string app_name 0x7f040001 /res/values/strings.xml
4 string hello 0x7f040000 /res/values/strings.xml
自動追記された、R.javaファイル例
/* AUTO-GENERATED FILE.  DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found.  It
* should not be modified by hand.
*/

package android.style;

public final class R {
   public static final class attr {
   }
   public static final class drawable {
       public static final int ic_launcher=0x7f020000;
   }
   public static final class layout {
       public static final int main=0x7f030000;
       public static final int test1_1=0x7f030001;
   }
   public static final class string {
       public static final int app_name=0x7f040001;
       public static final int cancel=0x7f040003;
       public static final int hello=0x7f040000;
       public static final int save=0x7f040002;
   }
}

クラス リソース名 リソースID 内容記述ファイル
attr
drawable ic_launcher 0x7f020000
layout main 0x7f030000 /res/layout/main.xml
layout test1_1 0x7f030001 /res/layout/main.xml
4 string app_name 0x7f040001 /res/values/strings.xml
4 string cancel 0x7f040003 /res/values/strings.xml
4 string hello 0x7f040000 /res/values/strings.xml
4 string save 0x7f040002 /res/values/strings.xml


ストレージリソース

 閲覧数:489 投稿日:2014-03-24 更新日:2014-03-24 

Database(Content Provider)


SQLite を用いたデータベース
・ContentProvider というインタフェースを用意することで、他のAndroidアプリ向けにモデルを提供出来るようになる
・OS 標準では、ギャラリーやカレンダーなどのデータベースへのインタフェースとして ContentProvider が利用されている
・通常、ContentProvider で提供されているリソースのアクセスは、ContentResolver オブジェクトを介して行う

・Android のファイルシステムの中では、以下のディレクトリに、SQLite3 のデータベースファイルが指定した名前で格納される
/data/data/(package name)/databases


SharedPreferences


アプリ内で共有する設定ファイルのモデル
・中身は XML ファイル
・各種プリミティブ型と String 型、Set 型のデータを格納することが可能
・SharedPreferences の XML ファイルへのアクセス権限を設定することができ、他のアプリからも見える形にすることも可能だが、セキュリティホールの原因となるため、自分のアプリ以外からはアクセスできないように設定するべき

・Android のファイルシステムの中では、以下のディレクトリに、指定した名前で保存される(一部端末で、保存場所が違うことによる不具合が報告されている)
/data/data/(package name)/shared_prefs


Internal Storage


内部ストレージ
・データベースファイルや XML ファイル以外に、直接内蔵メモリにファイルを保存するインタフェースも用意されている
・デフォルトでは、アクセス権限は自分のアプリのみしか持っていないが、SharedPreferences 同様他のアプリからもアクセスデキるようにすることが可能(非推奨)。
・Android では、標準の API として、Internal Storage を使ったキャッシュの仕組みを公開している
・Internal Storage の容量が少なくなると、システムが自動的にキャッシュファイルを削除するようになるが、自前でアプリが利用するキャッシュファイルの管理(総容量の管理、CRUD)をするべき


External Storage


外部ストレージ
・SD カードや、外部ストレージ扱いの内蔵メモリを扱うことが可能
・外部ストレージに配置するファイルにはアクセス権限の設定がないので、どのアプリからでも読み取ることが可能
・このため、秘匿すべきデータを外部ストレージに書き込むべきではない

・また、外部ストレージは取り外し可能な場合があるため、常にアクセス可能とは限らない
・SD カードのようなメディアを取り外す以外に、ストレージ扱いで USB 接続中や電源を入れた直後も、SD カードがマウント状態とはならない為、External Storage にアクセスできなくなる

・External Storage のデータは、以下に格納される
/sdcard/Android/data



リソースの参照

コメント投稿(ログインが必要)