3 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果發(fā)現(xiàn)自己想要這樣做,則可能是在濫用資源系統(tǒng)。看一下資產(chǎn),以及AssetManager
是否要遍歷.apk中包含的文件。

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
好的,這感覺有點(diǎn)駭人聽聞,但這就是我通過Reflection提出的。(請(qǐng)注意,這resources是class的實(shí)例android.content.res.Resources。)
final R.drawable drawableResources = new R.drawable();
final Class<R.drawable> c = R.drawable.class;
final Field[] fields = c.getDeclaredFields();
for (int i = 0, max = fields.length; i < max; i++) {
final int resourceId;
try {
resourceId = fields[i].getInt(drawableResources);
} catch (Exception e) {
continue;
}
/* make use of resourceId for accessing Drawables here */
}
如果有人擁有更好的解決方案,可以更好地利用我可能不知道的Android通話,那么我肯定希望看到他們!

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊
我對(duì)Matt Huggins做出了很好的回答,并對(duì)其進(jìn)行了重構(gòu)以使其更加通用:
public static void loadDrawables(Class<?> clz){
final Field[] fields = clz.getDeclaredFields();
for (Field field : fields) {
final int drawableId;
try {
drawableId = field.getInt(clz);
} catch (Exception e) {
continue;
}
/* make use of drawableId for accessing Drawables here */
}
}
用法:
loadDrawables(R.drawable.class);
- 3 回答
- 0 關(guān)注
- 577 瀏覽
添加回答
舉報(bào)