需要根据字典获得drawable,只能写if-else吗
2015-08-02 09:57
585 查看
不久以前。。我是这么做的。。
在制作某个附件下载的模块的时候,遇到需求要为不同的文件后缀显示不同的图标。一开始的时候,我写下了这样的代码private int getIconResource(String subfix){ if("png".equals(subfix)){ return R.drawable.icon_picture; } else if("gif".equals(subfix)){ return R.drawable.icon_picture; } else if("txt".equals(subfix)){ return R.drawable.icon_txt; } ... }
好吧,工作得还不错,但是,文件后缀何其多呀,美工提供的默认图标就那么几个,好些文件后缀都对应着同一个drawable。尽管逻辑简单,可是一直这么加代码下去也太难看了。
当然,从前遇到需求要根据一些业务字典显示图片的时候,我也是使用相同的逻辑。
是时候做出改变了
第一步
找到 string.xml,添加下这么几行... <drawable name="subfix_txt">@drawable/icon_txt</drawable> <drawable name="subfix_doc">@drawable/icon_txt</drawable> <drawable name="subfix_ppt">@drawable/icon_ppt</drawable> <drawable name="subfix_png">@drawable/icon_picture</drawable> <drawable name="subfix_jpg">@drawable/icon_picture</drawable> ...
第二步,修改代码
private int getIconResource(String subfix){ int res = context.getResources().getIdentifier("subfix_"+subfix,"drawable",null); return res==0?R.drawable.icon_default:res; }
以后,要增加某个后缀对应的图片,就只需要在string.xml增加一行映射就可以了。不过,其实如果字典跟图片是一对一关系的时候,省略第一步亦可。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories