android初始化时反射读取所有的drawable

刚开始写android app,需要做一个图片浏览的Activity,本来应该是用一个数组来列出所有的drawable,不过drawable实在太多了,一个个列出来还是件体力活,只能搬出java reflection。代码如下:

try {
    Class klazz = Class.forName("com.huangzhimin.android.R$drawable");
    Field[] fields = klazz.getFields();
    mImageIds = new int[fields.length - 1];
    int i = 0;
    for (Field field : fields) {
        if (!field.getName().equals("icon")) {
            mImageIds[i] = field.getInt(klazz);
            i++;
        }
    }
} catch (Exception e) {
    e.printStackTrace();
}

注意drawable是R的内嵌静态类,所以要写成com.huangzhimin.android.R$drawable。

Posted in  java android


blog comments powered by Disqus
Fork me on GitHub