FC2ブログ
ヽ|∵|ゝ(Fantom) の 開発blog? ホーム » Android »【Android】【Java】画像リソースIDをコードで取得する

【Android】【Java】画像リソースIDをコードで取得する  


只今、CGマインスイーパ のメイン部分とデータ部分を切り離し中…。

で、意外とやっかいな事が起こった。というのはゲームの数字パネルや爆発、×マークや?マークなど、画像素材は使い回したいので、ライブラリの方にリソースとして持っているのだが、これは「R.java」という自動生成ファイルにIDが割り当てられる。これが取り込んだメインの方の「R.java」ファイルとは別のIDになってしまう。

画像のIDを固定する方法でもあれば問題ないのだが、それはそれで画像が増えたときには管理が大変になる。で、色々調べてみたのだが、どうやら動的にIDを取得方法があるみたいなのでやってみた。

String name = "name";
int id = getContext().getResources().getIdentifier(name, "drawable", getContext().getPackageName());
Drawable image = getContext().getResources().getDrawable(id);

うん、いい感じ。ちなみに数字パネルの画像は「num0.png」でソース内では「R.drawable.num0」なのだが、これは0~8まであるので、この方法を使えば、for ループで一気に取得もできる。

Drawable[] images = new Drawable[9];
for (int i = 0; i <= 8; i++) {
String name = "num" + i;
int id = getContext().getResources().getIdentifier(name, "drawable", getContext().getPackageName());
images[i] = getContext().getResources().getDrawable(id);
}

うん、これは便利。実際には名前 "num0" の部分を Strings 型引数にした関数を作って Drawable で返すようにしてるけど、大まかにはこんな感じ。「R.drawable.~」の書き方はプロジェクトをまたがるようなソースには不向きなようなので、これからは全部この方法で行こう(笑)。R.java って意外とやっかいだな…


(関連記事)
【Android】アプリ名 app_name タグをコードで取得する


スポンサーサイト

category: Android

thread: プログラミング

janre: コンピュータ

tb: 0   cm: --



トラックバック

トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/84-1eb9c9d2
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

Social

検索フォーム

全記事一覧

カテゴリ

ユーザータグ

最新記事

リンク

PR

▲ Pagetop