不久以前。。我是这么做的。。
在制作某个附件下载的模块的时候,遇到需求要为不同的文件后缀显示不同的图标。一开始的时候,我写下了这样的代码
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增加一行映射就可以了。不过,其实如果字典跟图片是一对一关系的时候,省略第一步亦可。