リソース

android-resource.png

リソースとは

画像や文字列や色、またアクティビティで利用したビューやレイアウトに関する記述を行ったXMLファイル

リソースをどこに置く?

アプリ内で何か画像やデータなどのリソースを使いたい場合はどこに置く???

  1. SDカードに置く
  2. res/drawable に置く。(画像ならば)
  3. res/raw (その他のバイナリファイル 好きなフォルダ名でいい)

res/drawableに入れた場合

R.drawable.画像ファイル名

というかんじでアクセスできる。

Resourceクラスを得るには?

View.getResources();//あるいは、
Context.getResources();

ViewクラスのメンバのgetResources()を使う。
つまり、Viewの派生クラスならすべてこれが使えるってこと。

ContextクラスにもgetResources()がある。

ライブラリプロジェクトの中でリソースを使うときは

ライブラリプロジェクトの中でR.drawable.idを使うと、jarにした時にエラーになります
なので代わりにこんな風に書きましょう

String pa=context.getPackageName();
int imgID=context.getResources().getIdentifier("lib_image", "drawable", pa);
Drawable builtinIcon = context.getResources().getDrawable(imgID);

リソースの種類(res/フォルダ以下)

ディレクトリ 説明
animator property animationsを定義したXMLファイル。
anim tween animationsを定義したXMLファイル。
color 状態に応じ色のリストを定義したXMLファイル。単なる色の定義は「values」ディレクトリ。
drawable 画像ファイル(.png, .9.png, .jpg, .gif)や形状などを定義したXMLファイル。
layout アクティビティなどに配置するビュー及びレイアウトを定義したXMLファイル。
menu アプリケーションのメニューを定義したXMLファイル。
raw 任意の形式で任意のファイルを設置。3Dポリゴンデータはここかな。
values 文字列や数値や色といった値を定義したXMLファイル。
xml 任意の内容が含まれるXMLファイル。

Resourceオブジェクトをゲットした後、どうやってファイルを開くのか?

そしてResourcesクラスにopenRawResourceというメソッドを使ってInputStreamを得る。
戻り値 関数名 説明
InputStream openRawResource(int id, TypedValue value) Open a data stream for reading a raw resource.
InputStream openRawResource(int id) Open a data stream for reading a raw resource.
AssetFileDescriptor openRawResourceFd(int id) Open a file descriptor for reading a raw resource.
Bitmap BitmapFactory.decodeResource()
Bibliography

サポートサイト Wikidot.com