Xamarin.Android中如何根据给定的文件名获取文件

这里我们通过C#的反射机制来实现这个功能,以获取Resource/drawable文件夹下的图片为例:

public int getResourceByReflect(String imageName) {
            var drawable = typeof(Resource.Drawable);
            int r_id = 0;
            try {
                var field = drawable.GetField(imageName);
                r_id = (int)field.GetValue(field.Name);
            } catch (Exception e) {
            }
            return r_id;
        }

使用方法:

        var id = getResourceByReflect(iconItem.Name);
        if (id == 0) return;
        var picture = BitmapFactory.DecodeResource(Context.Resources, id);

需要指出的是,在原生技术中,也可以通过反射实现这个功能,但其反射的目标对象是JVM对象。而在上述代码中,我们使用的是C#的反射机制,因为在Xamarin.Android中,Resource.Drawable是一个C#对象,而不是一个托管的JVM对象,所以如果我们使用Java的反射机制去获取其内容,反而会失败。

参考文献

Android根据图片文件名获取它的资源ID 的两种方式

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,515评论 25 708
  • “挖宝队”关于月相的手帐整理。提问:上海某学校布置暑假作业,要求连续28天每晚七点观察并记录月相变化?请问如果是你...
    EX艾蔻阅读 468评论 0 5
  • 软件工程二班 1505060229 肖海燕 数据链路层和网桥 1.安装CPT后创建如下图链路 2.为四台PC机配置...
    107854阅读 225评论 0 0
  • 空间排毒,出门的时候,我不喜欢住朋友家,我喜欢住酒店,原因就是,朋友家信息量太大。 写作者每天要接收并处理大量信息...
    吉祥娘恒慈阅读 277评论 0 0
  • 前段时间在微博上发了一个话题,“你认为的美好是什么样子的”引发大家热议,都纷纷做起了白日梦,但是你必须得承认很多美...
    治愈里阅读 952评论 0 0