您的位置:首页 > 移动开发 > Android开发

需要根据字典获得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增加一行映射就可以了。不过,其实如果字典跟图片是一对一关系的时候,省略第一步亦可。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android tips