2017-03-09 1 views
0

나는 안드로이드 개발의 초보자이고 내 프로젝트를위한 4Pics1Word와 같은 게임을 만들고있다. 어떻게하면 이미지를 4 개씩 무작위로 추출 할 수 있을지 궁금합니다. 모든 활동에는 4 개의 이미지가 있어야하며 이미지는 서로 관련되어야합니다. 그래서 각 이미지에 설명을 넣은 다음 무작위로 지정하여 제어문을 사용하여 과 일치하는 설명의 사진 4 개를 순서대로 제어 할 수 있습니다. 난 무작위로 수준을 무작위로 (그래서 각 응용 프로그램은 동일한 연속 수준이되지 않습니다) 무작위로 필요합니다. 어떤 아이디어? 고마워요!android studio의 이미지 뷰에서 이미지 그룹을 무작위로 추출하는 방법은 무엇입니까?

+0

아무 것도 시도해 보지 않으셨습니까? 가지고 있다면, 질문에 언급하고 어떤 단계에서 실패했는지 알려주십시오. 우리 중 많은 사람들이 당신을 도와주고 싶지만 [어떻게 좋은 질문을합니까?] (http://stackoverflow.com/help/how-to-ask)를 읽어보십시오. 어쨌든, StackOverflow에 오신 것을 환영합니다 :) – koceeng

답변

1

나는 같은 것을 할 것입니다 :

public void start() { 
    MyImage[] images = /* a list of your images */ 
    ImageView[] imageViews = /* a list of your imageViews (in this case, 4)*/ 
    fillImageViews(/* the desc */, imageViews, images); 
} 




private class MyImage() { 
    Drawable image; 
    String desc; 

    public MyImage(Drawable img, String description) { 
     image = img; 
     desc = description; 

    } 

} 

public void fillImageViews(String desc, ImageView[] views, MyImage[] images) { 
    ArrayList<Integer> usedIndexs = new ArrayList(); 
    Random rand = new Random(); 
    for (ImageView v : views) { 
     while (usedIndexs.size() < images.length) { 
      int index = rand.nextInt(images.length); 
      if (images[index].desc.equals(desc) && !usedIndexs.contains(index)) { 
       //description matches 
       v.setImageDrawable(images[index].image); 
       usedIndexs.add(index); 
       break; 
      } 
      usedIndexs.add(index); 
     } 
    } 
} 

는 않는 모든 아직 및 설명과 일치하는 경우에 사용되었는지 확인 목록과 검사의 임의의 사진을 찾을 수 있습니다. 그것들이 전부 또는 모든 ImageViews가 채워질 때까지 그것은 무작위 그림을 당길 것입니다. 직접 시도하지 않았지만 코드가 작동해야합니다.

다른 아이디어 : 자신의 기사에 같은 설명이있는 이미지를 모두 가지고있는 것이 좋습니다. 그런 식으로 당신은 단지 말한 arraylist에게서 무작위 그림을 당길 수있다. 예 :

ArrayList<Drawable> catPics = new ArrayList(); 
//add cat pics here 
ArrayList<Drawable> dogPics = new ArrayList(); 
//add dogs pics here 

//And now you could make function to pull the pictures 
public Drawable getRandomPicture(ArrayList<Drawable> imgs) { 
    return imgs.get(new Random.nextInt(imgs.size())); 
} 
+0

Heyy! 고마워요! 나는 그것을 시도 할 것이다! :디 –

1
// In drwable folder your imagename like img_0,img_1,img_2.....img_N 



    String imagename = "img_" + rnd.nextInt(N);// N is Maximum random number 
    imageView.setImageDrawable(
     getResources().getDrawable(getResourceID(imagename, "drawable", 
      getApplicationContext())) 
     ); 
+0

고마워요. 그러나 무작위화할 관련 사진 4 개가 필요합니다. 그럼 내 게임에 5 가지 활동이 있다고 가정 해 봅시다. 각 활동은 서로 관련된 4 개의 그림으로 구성됩니다. 그래서 20 장의 사진을 사용할 것입니다. 그리고 20 장의 사진은 5로 나누어집니다. 모든 그룹에는 서로 관련된 4 장의 사진이 있습니다. 그래서 어떻게 그 사진들을 무작위로 추출할까요? –

+0

동일한 개념으로 모든 활동을 적용하지만 활동의 이미지 이름을 변경합니다. 예를 들어 활동 A에서만 사과 이미지를 표시하려면 imagename이 apple_0..apple_5 ... 임의 숫자 5와 같아야 함을 의미합니다. imagename = "apple_ "+ rnd.nextInt (N) – sasikumar

+0

감사합니다! 나는 그것을 역시 시도 할 것이다! : D –

관련 문제