2016-08-04 5 views
0

내 레이아웃에서 두 개의 ImageView를 만들었습니다. imageviewTopimageviewBottom이라고 부릅니다.
두 개의 이미지를 드로어 블에 저장했습니다 (green_image.png 및 red_image.png). 버튼을 클릭하면 ImageView 중 하나가 임의로 선택되고 green_image에서 red_image로 변경됩니다.무작위로 두 개의 ImageView 중 하나를 선택하고 ResourceImage를 업데이트하십시오.

switch/case 문을 생성하고 1 또는 2와 같은 임의의 숫자를 생성하려고 이미 시도했습니다.
이 숫자를 기반으로 case 문은 위쪽 또는 아래쪽 이미지를 업데이트합니다.
이것은 2 개의 ImageViews에서 잘 작동하지만, 100이 될 경우를 대비하여 코드에서 100 개의 사례를 만들어야합니다.
더 동적 인 옵션을 찾고 있습니다.

ImageView의 이미지를 업데이트하는 방법을 알고 있습니다. 가능한 경우 하나의 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의 좌표와 그 내부의 이미지를 임의로 랜덤하게 생성하는 이유는 무엇입니까? 또는 int a = new Random(). nextInt (100)와 같은 코드를 작성하면됩니다. x = (x - x % 4)/4 * 배수; y = x % 4 * 다중; imgId = a; 다음 이미지의 좌표와 이미지를 간단하게 설정하십시오. –

+0

이미 선행 이미지를 설정하고 싶습니다. 예를 들어 시작시 특정 좌표에 4 개의 녹색 이미지가 있어야하고 버튼 클릭시 빨간색 중 하나가 표시되어야합니다. – Gexo

답변

0

당신은 하나 개의 이미지 뷰를 사용하여, 사용자가 그린 그림을 무작위 수 : 여기

는 코드입니다.

또는 이미지 뷰 배열을 사용하도록 조정할 수 있습니다. 너의 선택.

그러나 목록에서 임의의 색인을 얻으려면 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 값 전체를 반복하지 않는 것이 좋습니다 것입니다. 경우

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

는 "N"이미지 뷰 요소들의 동적 선택을 수행하려면, 다음 데이터 구조에 저장하기 위해 필요한 것 (예를 들어, 어레이리스트, 등). 예를 들어 다음과 같은 코드는 목록에서 임의의 이미지 뷰를 선택합니다

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); 
    } 

를 귀하의 경우에는, 두 개의 이미지 뷰의 ("imagevieTop"와 "imageviewBottom") 고정 변수 선언과 함께 다음 목록에 전달할 필요가있을 것이다 또는 그것들 중 하나를 동적으로 선택하기 위해 비슷한 것을 사용하십시오.

+0

답변 해 주셔서 감사합니다. 위/아래의 답변과 함께 시도하고 있습니다. – Gexo

+0

도움을 주셔서 감사합니다. 코드를 사용하여 ArrayList를 cricket_007에서 제공하는 imageviews로 채운 다음 임의로 선택하여 업데이트했습니다. 감사! – Gexo

+0

문제 없으니 기꺼이 도와 드리겠습니다 =). – josemgu91

관련 문제