2013-11-03 1 views
0

배열의 이미지를 임의로 표시하려고합니다. 캔버스가 렌더링되고 있지만 이미지가 캔버스에 전혀 표시되지 않습니다. 내 드로어 블 Drawable 제목 "하나, 둘, 셋, 넷, 다섯"입니다ArrayList에서 임의로 이미지를 표시하는 방법 <Integer>

이 내 배열을 초기화하는 방법입니다 int[] array1;

이 내 변환 기능

public static int[] convertIntegers(List<Integer> integers) { 
    int[] ret = new int[integers.size()]; 
    Iterator<Integer> iterator = integers.iterator(); 
    for (int i = 0; i < ret.length; i++) { 
     ret[i] = iterator.next().intValue(); 
    } 
    return ret; 
} 

이 방법을 내 렌더링입니다. 캔버스가 표시되지만 이미지는 표시되지 않으며 오류가 발생하지 않습니다.

public void render(Canvas canvas) { 

    if (canvas != null) { 
     canvas.drawRGB(234, 237, 235); 


    ArrayList<Integer> list = new ArrayList<Integer>(); 

     Random random = new Random(); 

     int[] images = new int[] { R.drawable.one, R.drawable.two, 
       R.drawable.three, R.drawable.four, R.drawable.five }; 

     for (int i = 0; i < 5; i++) { 

      while (true) { 
       int next = random.nextInt(5); 
       if (!list.contains(next)) { 
        list.add(images[next]); 
        break; 
       } 
      } 
     } 

     array1 = convertIntegers(list); 

    } 
} 

배열에서 이미지 전체를 무작위로 표시하도록합니다. 결국 나는 각각의 이미지가 그 이름의 int 값을 가지기를 바라고 (즉 드로어 블 "1"은 값 1을 가질 것입니다.) 그리고 배열은 총합이 50이 될 때까지 무작위로 이미지를 표시 할 것입니다.하지만 지금은 이미지를 얻으려고합니다. 캔버스에 표시합니다. 내 MainGamePanel에서이 확실하지 도움이 될 것입니다하지만 만약 내가 서피스 뷰 SurfaceView를 사용하고 있는데이 :

나는 안드로이드 디바이스에 새로운 해요하지만 android how to get 4 images in array from ten array of image randomly

편집 어떤 도움을 주셔서 감사합니다 도움이 스레드를 사용하고 있었다 활동.

답변

0

당신은 그 대답을 따르고 있지만 목록에서 셔플 메서드를 사용하지 않고 대신 이중 루프를 사용하여 숫자를 다시 정렬합니다.

캔버스에서 이미지를 그릴 수없는 이유는 이미지를 그리지 않았기 때문입니다. 목록을 만들고 값을 무작위로 추출하지만 캔버스에 그리지 마십시오.

어레이 (내가 그것을 테스트하지 않았지만이 유사해야합니다) 도착 후에는 다음과 같이해야

:

int x = 0; 
int y = 0; 
for (int i=0; i<array.length; i++) { 
    Bitmap bmp = BitmapFactory.decodeResource(getResources(), array1[i]);    
    canvas.drawBitmap(bmp, x, y, null); 
    x += bmp.getWidth(); 
} 

편집 : 난 그냥 당신이 onRender()에있는 모든 계산을하고있는 실현을 방법. 드로잉을 제외한 모든 것을 메서드 외부로 옮기려고합니다.

관련 문제