2011-01-18 8 views
1

これは本当にシンプルなようですが、私はそれを理解することはできません謝罪します。私はボタンクリックに基づいて実行時にイメージを変更したいImageButtonを持っています。 resフォルダに5つの画像があります。ユーザーが「次へ」ボタンを押すと、次の画像に移動します。画像のファイル名は、など、文字列でAndroidドロワブルリソースにアクセスする

をimage2.pngをimage1.pngている私は、私はあなたがやって画像を変更することができます知っている:私はを追跡するためにカウンタ(int)を持っている

imgButton.setImageResource(R.drawable.image2); 

を画像番号が表示されます。しかし、どのようにイメージを次のイメージに変更するのですか?どんな助けもありがとう。

答えて

4

イメージへの参照を保持する整数の配列を作成します。その後、

int[] images = new int[5]; 
images[0] = R.drawable.image001; 
images[1] = R.drawable.image002; 
images[2] = R.drawable.image003; 
images[3] = R.drawable.image004; 
images[4] = R.drawable.image005; 

そしてそれぞれクリックして、あなたの配列から値を用いて画像リソースを設定する上で、あなたのカウンタをインクリメント:

imgButton.setImageResource(images[counter]); 

簡単にあなたはどのように知っている...;)

+0

返信いただきありがとうございます。私はそれについて考えましたが、私は約50枚の画像を持っていました。その方法は問題だろうか?パフォーマンスに影響を与えますか? – Brian

+0

ええと、私はそれがパフォーマンスに特に顕著な影響を及ぼしているとは想像できませんが、とても良いコードにはなりません。あなたのメインコードから50本のひどい線を守るために、それ自身の静的なクラスでそれをポップする価値はあるかもしれませんが、私は幾分清潔なコードの娼婦です。 – jsonfry

+0

@Brian 50の画像はメモリにたくさん保存されるかもしれません。 –

4

ます文字列ファイル名に基づいて画像のIDを取得するためにリフレクションを使用できます。

Field f = R.getClass().getField("image2"); 
int id = f.getInt(null); // use null for static fields 
imgButton.setImageResource(id); 

編集: または言及この他questionとして、あなたはgetIdentifier()を使用してIDのリソースを求めることができます。これは静的なconstで取得するよりも遅いですが、あなたのために働くかもしれません。

関連する問題