2011-03-18 105 views
53

我在我的res/drawable文件夾中有一些圖像。比方說img1.png, img2.pngimg3.png。我目前正在創建這些圖像ID的整數數組在Java中這樣創建資源ID的整數數組

int[] imgIds = {R.drawable.img1, R.drawable.img2, R.drawable.img3}; 

取而代之的,是有可能創造的res/values文件中的一個(比如說strings.xml)整數數組這樣

<integer-array name="img_id_arr"> 
    <item>@drawable/img1</item> 
    <item>@drawable/img2</item> 
    <item>@drawable/img3</item> 
</integer-array> 

然後通過getResources().getIntArray(R.array.img_id_arr)在Java中訪問它?

回答

60

僅使用「數組」而不是「整數數組」。請參閱開發人員指南中的Typed Array

+0

工作。謝謝。 – 2011-03-19 00:28:21

+0

這似乎爲可繪而不是風格,例如工作: <數組名稱= 「主題」> @android:風格/主題 @android:風格/ Theme.Light @android:風格/ Theme.Holo @android:風格/ Theme.Holo.Light 這怎麼行,爲可繪其它資源ID一旁? – toobsco42 2012-09-13 04:33:01

+0

據我所知,我認爲是創建一個int數組來表示預編譯的值本身,而不是它表示的值。如果有人有任何想法,這是值得歡迎的。 – AlexSanchez 2014-10-31 22:32:47

1

製作一個LevelListDrawable。雖然它不完全是你想要的,但幾乎可以實現。

+0

非常優雅,非常被低估的解決方案。 – Tobias 2017-02-22 16:16:08

44

XML integer array, resource references, getIntArray

TypedArray ar = context.getResources().obtainTypedArray(R.array.my_array); 
int len = ar.length(); 
int[] resIds = new int[len]; 
for (int i = 0; i < len; i++) 
    resIds[i] = ar.getResourceId(i, 0); 
ar.recycle(); 
// Do stuff with resolved reference array, resIds[]... 
for (int i = 0; i < len; i++) 
    Log.v (TAG, "Res Id " + i + " is " + Integer.toHexString(resIds[i])); 
+0

是否可以獲取對資源而不是數組的單個引用?我需要它,以防我想檢查2個資源ID是否相等。 – 2013-04-04 14:11:18