38. Android 反射资源工具ReflectionUtil

38. Android 反射资源工具ReflectionUtil工具代码

ReflectionUtil

public class ReflectionUtil {public enum ResourcesType {styleable,style,string,mipmap,menu,layout,integer,id,drawable,dimen,color,bool,attr,anim}/*** 根据名字,反射取得资源** @param context context* @param name resources name* @param type enum of ResourcesType* @return resources id*/public static int getResourceId(Context context, String name, ResourcesType type) {String className = context.getPackageName() + “.R”;try {Class<?> c = Class.forName(className);for (Class childClass : c.getClasses()) {String simpleName = childClass.getSimpleName();if (simpleName.equals(type.name())) {for (Field field : childClass.getFields()) {String fieldName = field.getName();if (fieldName.equals(name)) {try {return (int) field.get(null);} catch (IllegalAccessException e) {e.printStackTrace();}}}}}} catch (ClassNotFoundException e) {e.printStackTrace();}return -1;}}工具使用

ReflectionUtilActivity

public class ReflectionUtilActivity extends AppCompatActivity implements View.OnClickListener {ImageView imageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);this.setContentView(R.layout.activity_reflection_util);this.imageView = (ImageView) this.findViewById(R.id.reflection_iv);this.findViewById(R.id.reflection_bt).setOnClickListener(this);}/*** Called when a view has been clicked.** @param v The view that was clicked.*/@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.reflection_bt:/** 获取资源名为mm_1的mipmap类型文件*/this.imageView.setImageResource(ReflectionUtil.getResourceId(this, “mm_1”, ReflectionUtil.ResourcesType.mipmap));break;}}}

去追寻那飞翔的翅膀。落叶随风淡定了它漂泊的方向。

38. Android 反射资源工具ReflectionUtil

相关文章:

你感兴趣的文章:

标签云: