안드로이드

안드로이드 R.drawable.IDs drawable에 있는 이미지들 array.xml에 배열로 추가해서 사용하기

알통몬_ 2019. 7. 3. 11:28
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


안드로이드에서 수십 개의 이미지를 배열로 가져와서

할당해야하는 경우가 있습니다.


이 경우 그냥 쉽게 생각해서 int 배열 선언 후

하나하나 R.drawable.xxx, R.drawable.xxx2, ....

처럼 추가할 수 있지만, 너무 번거럽고, 클래스 코드가 좀 지저분해집니다.


이런 경우 array.xml 을 사용할 수 있는데요.

values 폴더 아래에 arrays.xml 파일을 생성해줍니다.

<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="quiz_lv1">
<item>@drawable/quiz_img_lv1_01</item>
<item>@drawable/quiz_img_lv1_02</item>
<item>@drawable/quiz_img_lv1_03</item>
<item>@drawable/quiz_img_lv1_04</item>
<item>@drawable/quiz_img_lv1_05</item>
<item>@drawable/quiz_img_lv1_06</item>
<item>@drawable/quiz_img_lv1_07</item>
<item>@drawable/quiz_img_lv1_08</item>
<item>@drawable/quiz_img_lv1_09</item>
<item>@drawable/quiz_img_lv1_10</item>
<item>@drawable/quiz_img_lv1_11</item>
<item>@drawable/quiz_img_lv1_12</item>
<item>@drawable/quiz_img_lv1_13</item>
<item>@drawable/quiz_img_lv1_14</item>
<item>@drawable/quiz_img_lv1_15</item>
<item>@drawable/quiz_img_lv1_16</item>
<item>@drawable/quiz_img_lv1_17</item>
<item>@drawable/quiz_img_lv1_18</item>
</array>
</resources>


그다음 저처럼 필요한 이미지들을 선언해줍니다.

그리고 자바에서 

TypedArray typedArray = getResources().obtainTypedArray(R.array.quiz_lv1);

이렇게 불러와서 사용합니다.
이미지들은 typedArray.getResourcesId(int idx, int defValue) 로 하나하나 씩
불러와서 필요한 곳에 사용할 수 있습니다.
저같은 경우는 Vector<Integer> 에 담아서 사용했습니다.

for (int i = 0; i < typedArray.length(); i++) {
imgLists.add(typedArray.getResourceId(i, -1));
}

이상입니다. 감사합니다.


반응형