2016-08-04 5 views
0

を更新し、のはimageviewTopimageviewBottomそれらを呼びましょう。
2つのイメージをドロウアブル(green_image.pngとred_image.png)に保存しました。
は、私はまた、ボタンを追加し、ボタンがクリックされたときに、ImageViewsの一つがランダムに選択されますされ、私がやりたいたいとgreen_imageからそれがred_imageに変更されます。は無作為に2つのImageViewsのいずれかを選択して、私は私のレイアウトで2 ImageViewsを作成しているResourceImage

switch/case文を作成し、1または2のような乱数を生成しようとしました。
この番号に基づいて、case文は上部または下部の画像を更新します。
これは2つのImageViewでうまくいきますが、100の場合は100のケースを作成する必要があります。
私はより動的なオプションを探しています。それが可能であれば

私はImageViewのためにイメージを更新する方法を知って、私は、ランダムに1つのImageViewのを選択する方法については、一部に苦しんでいます。

public class MainActivity extends Activity { 

    ImageView imagevieTop, imageviewBottom; 
    Button randomButton; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     imagevieTop = (ImageView) findViewById(R.id.imageViewTop); 
     imageviewBottom = (ImageView) findViewById(R.id.imageViewBottom); 
     randomButton = (Button) findViewById(R.id.buttonRandom); 

     randomButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // randomly select one of the two imageviews 
       // for example: randomly selected imageviewTop 
       // set imageresource red_image to imageviewTop 

       //at next start up it would select either top or bottom, 50%-50% and then assign the image to it 
      } 
     }); 
    } 
} 
+0

ImageViewの座標とその内部の画像をランダムに生成してみませんか? OR int a = new Random()。nextInt(100)のようなコードを書くことができます。 x =(x-x%4)/ 4 *倍数; y = x%4 *倍数。 imgId = a;スタート・アップ時に、たとえば、常に特定の座標で4枚の緑の画像がなければならないとボタンでそれらのいずれかをクリックして、私は、すでに先行画像を設定したい その後、簡単なセットの画像座標と画像 –

+0

が赤に変わります。 – Gexo

答えて

0

あなただけの1つのImageViewのを使用して、あなたが描く絵をランダム化することができます:ここで

はコードです。

また、あなたはImageViewsの配列を使用するために、これを調整することができます。あなたの選択。

したいラインは、しかし、リストからランダムなインデックスを取得するint index = random.nextInt(imgs.length);です。

public class MainActivity extends Activity { 

    int[] imgs = new int[] { R.drawable.green_image, R.drawable.red_image }; 
    Button randomButton; 

    private final Random random = new Random(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     final ImageView imgView = (ImageView) findViewById(R.id.imageView); 
     randomButton = (Button) findViewById(R.id.buttonRandom); 

     randomButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       int index = random.nextInt(imgs.length); 

       // randomly select one of the two drawables 
       int resId = imgs[index]; 

       // set imageresource imgView 
       Drawable d = getResources().getDrawable(resId); 
       imgView.setImageDrawable(d); 

      } 
     }); 
    } 
} 

「100 ImageViews」の問題を処理するために、私はコードの100行をコピーして、代わりに合理的なID値をループではないお勧めします。あなたはImageViewの要素「N」の動的な選択をしたい場合には

List<ImageView> imgViews = new ArrayList<ImageView>(); 
for (int i = 0; i < 100; i++) { 
    int resId = getResources().getIdentifier("imgView" + i, "id", getPackageName()); 
    ImageView nextImg = (ImageView) findViewById(resId); 
    imgViews.add(nextImg); 
} 
+0

答えをいただきありがとうございます。私は今すぐ確認しています。以下の回答とともに、ArrayListを作成し、ループしてからランダムに選択して更新できるかもしれません。数分でフィードバックを得るでしょう。 – Gexo

+0

答えはjosemgu91と完全に連携し、ランダムな画像ビューを選択しました。助けてくれてありがとう! – Gexo

0

、あなたは、データ構造(例えば、配列、リスト、など)に保存する必要があります。たとえば、このコードは、リストからランダムImageViewのを選択します:

public ImageView getRandomImageView(final List<ImageView> imageViewList) { 
     final Random random = new Random(); 
     //The "nextInt" method works in the half-open range [0, n), so it'll never be equal to the list size. 
     final int randomElement = random.nextInt(imageViewList.size()); 
     return imageViewList.get(randomElement); 
    } 

をお使いの場合には、2つのImageViewの者(「imagevieTop」と「imageviewBottom」)固定変数に宣言し、その後、あなたがリストにそれらを渡す必要がありますそれらのうちの1つを動的に選択するために同様のものを使用する。

+0

あなたの答えをありがとう、私は上/下の答えと一緒にそれを試しています。 – Gexo

+0

助けてくれてありがとう、それは働いた。私は、このコードを使って、cricket_007によって提供されたimageviewsでArrayListを作成し、あなたのものをランダムに選択して更新しました。ありがとう! – Gexo

+0

問題はない、あなたを助けてうれしい=)。 – josemgu91

関連する問題