自定义工具类-----通过图片名称获取资源文件(运用反射)

一、用kotlin写的话如下:
object ReflectUtil {
    /**
     * 获取图片名称获取图片的资源id的方法 ,调用的时候
     * getResourceByReflect("sdf", R.mipmap::class.java)
     */
    fun getResourceByReflect(imageName: String, mipmap: Class<*>): Int {
//        val mipmaps = mipmap
        var field: Field? = null
        var r_id = 0
        try {
            field = mipmap.getField(imageName)
            field!!.isAccessible = true
            r_id = field.getInt(field.name)
        } catch (e: Exception) {
            Log.e("ERROR", "PICTURE NOT FOUND!")
        }

        return r_id
    }

    /**
     * 获取图片名称获取图片的drawable id的方法
     * getDrawableByReflect("sdf", R.mipmap::class.java)
     */
    fun getDrawableByReflect(imageName: String,drawable : Class<*>): Int {
//        val drawables = drawable
        var field: Field? = null
        var r_id = 0
        try {
            field = drawable.getField(imageName)
            field!!.isAccessible = true
            r_id = field.getInt(field.name)
        } catch (e: Exception) {
            Log.e("ERROR", "PICTURE NOT FOUND!")
        }

        return r_id
    }
}

二、用java写的话如下:

public class ReflectUtils {
    /**
     * 获取图片名称获取图片的资源id的方法
     * @return
     */
    public static int getResourceByReflect(String imageName, Class mipmap) {
//        Class mipmap = R.mipmap.class;
//        Class mipmaps = mipmap;
        Field field = null;
        int r_id = 0;
        try {
            field = mipmap.getField(imageName);
            field.setAccessible(true);
            r_id = field.getInt(field.getName());
        } catch (Exception e) {
            Log.e("ERROR", "PICTURE NOT FOUND!");
        }
        return r_id;
    }

    /**
     * 获取图片名称获取图片的drawable id的方法
     */
    public static int getDrawableByReflect(String imageName, Class drawable) {
//        Class drawable = R.drawable.class;
        Field field = null;
        int r_id = 0;
        try {
            field = drawable.getField(imageName);
            field.setAccessible(true);
            r_id = field.getInt(field.getName());
        } catch (Exception e) {
            Log.e("ERROR", "PICTURE NOT FOUND!");
        }
        return r_id;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_36968707/article/details/81874390
今日推荐