私はいくつかの描画可能なイメージ(fx。私はimage_1、image_2という名前のイメージがいくつかあります)をヘッダイメージとして循環させています。私のために利用可能なイメージの数をハードコードし、0からこの数字までランダムなインデックスを生成すると、イメージはランダムにロードされます。Android:Count string and drawables
mHeaderBackgroundImagesCount
は最終的なもの:として、ハード何かをコーディングすることは、通常は正しいプログラミングに移動するための方法ではありません
private int getHeaderBackground() {
// Random index between 0 and mHeaderBackgroundImagesCount
Random rand = new Random();
int index = rand.nextInt(mHeaderBackgroundImagesCount) + 1;
return getResources()
.getIdentifier("image_" + index, "drawable", getPackageName());
}
、従って私は動的に私が持っているどのように多くの「image_X」ドローアブルを見つけると、それを設定したいですmHeaderBackgroundImagesCount
。
strings.xml
リソースファイルの文字列も同じようにしたいと思います。すべてのページロード時にいくつかの文字列も循環しています。
ソリューションこのアップデートは、以下のラリットPoptaniの提案に触発され
を更新します。構文の修正と最適化が含まれており、動作することがテストされています。
private int countResources(String prefix, String type) {
long id = -1;
int count = -1;
while (id != 0) {
count++;
id = getResources().getIdentifier(prefix + (count + 1),
type, getPackageName());
}
return count;
}
System.out.println("Drawables counted: " + countResources("image_", "drawable"));
System.out.println("Strings counted: " + countResources("strTitle_", "string"));
注:このメソッドは、リソースがインデックス1で始まるカウントと仮定し、したがって故障カウントを得ID = 0の最初の機会に終了するため等image_1
image_2
<hole>
image_4
ようないかなる指標穴を有していません。
上記の元の投稿に改訂された手順を掲載しました。これはRANDOM_COUNTの必要性を取り除きます。 – Ambran
@Ambranは良いと思うので、最終的にはあなたのコードで最後に使用することを選択しましたか? –
'while'ループを使用すると、' for'ループのような特定の上限(RANDOM_COUNT)のインデックスを宣言する必要がなくなるため、私は上記の修正版を使用しました。アイデアは同じなので、ありがとう。 – Ambran