Android は、res/drawable ディレクトリ内の各写真に ID を割り当てます。彼らはどこにいる?プールから 1 つの写真を動的に選択して表示したいと考えています。どうやってやるの?
3 に答える
それらは res/drawable フォルダーに保存されます。
ファイル名が demo.png の場合、R.drawable.demo でアクセスできます。
ランダム ドローアブルにアクセスする場合は、すべてのリソース識別子を Integer ArrayList に格納し、Random() を使用してランダム関数をプログラムで生成し、arraylist からその特定のアイテムを取得します。そうすれば、毎回ランダムなドローアブルが得られます。
自動生成された ID は gen ファイルにありますが、使用することはお勧めできません。R.drawable.filename の事前定義された配列を介してファイル名を直接使用し、ランダムに選択することをお勧めします。
ID は R.java ファイルに保存されますが、変更は毎回上書きされるため、編集することはできません。
名前でリソースにアクセスすることもできます。これは、リソースの名前を知っている場合、または事前に定義された命名スキームに従ってリソースを導出できる場合に、問題を解決するための実行可能なアプローチになる可能性があります。(たとえば、イメージはシーケンスimage1
で名前が付けられimage2
ます。
クラスのgetIdentifier()メソッドを使用して、名前を識別子にマップする必要がありますResources
。
String name = "resource" + rng.nextInt(count);
int resource = getResources().getIdentifier(name, "drawable", "com.package");
このメソッドのドキュメントには次のように書かれています。
注: この関数の使用は推奨されません。名前でリソースを取得するよりも、識別子でリソースを取得する方がはるかに効率的です。
これは事実ですが、パフォーマンスに影響されないコードで実行している場合は、問題になる必要はありません。
または、リソースを XML でリストすることを気にしない場合は、ランダムに選択できる型付き配列を作成できます。