【Android】【Java】画像リソースIDをコードで取得する 
2013/10/16 Wed [edit]
只今、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 タグをコードで取得する
- 関連記事
トラックバック
トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/84-1eb9c9d2
この記事にトラックバックする(FC2ブログユーザー)
| h o m e |