Android之使用getIdentifier()获取资源Id

举报
chenyu 发表于 2021/07/26 23:27:38 2021/07/26
【摘要】 使用getIdentifier()方法可以方便的获各应用包下的指定资源ID。 主要有两种方法: (1)方式一 Resources resources = context.getResources(); int indentify = resources. getIdentifier( org.loveandroid.androidtest:drawable/icon"...




getIdentifier org.loveandroid.androidtest:drawable/icon" null null



  1. 第一个参数格式是:包名 + : +资源文件夹名 + / +资源名;是这种格式 然后其他的可以为null 



int = getResources().getIdentifier("icon""drawable""org.anddev.android.testproject");
  1. 第一个参数为ID名,第二个为资源属性是ID或者是Drawable,第三个为包名。 



写了一个方法:获取资源ID,如果不存在返回0


  
  1. static int getResourceId(Context context,String name,Stringtype,String packageName){
  2. ResourcesthemeResources=null;
  3. PackageManager pm=context.getPackageManager();
  4. try {
  5. themeResources=pm.getResourcesForApplication(packageName);
  6. returnthemeResources.getIdentifier(name, type, packageName);
  7. } catch(NameNotFoundException e) {
  8. e.printStackTrace();
  9. }
  10. return0;
  11. }


从数据库里读取图片名称,然后调用图片。直接用R.drawable.?无法调用。查了好多地方最后找到了个方法,分享给大家,希望有帮助。
主要由两种方法,个人建议第二种。
1.不把图片放在res/drawable下,而是存放在src某个package中(如:com.drawable.resource),这种情况下的调用方法为:

   
  1. String path = "com/drawable/resource/imageName.png";
  2. InputStream is = getClassLoader().getResourceAsStream(path);
  3. Drawable.createFromStream(is, "src");



2. 如果还是希望直接使用res/drawable中的图片,就需要通过下面的方法了:
假设创建工程的时候,填写的package名字为:com.test.image
int resID = getResources().getIdentifier("imageName", "drawable","com.test.image");
Drawable image = getResources().getDrawable(resID);

文章来源: chenyu.blog.csdn.net,作者:chen.yu,版权归原作者所有,如需转载,请联系作者。

原文链接:chenyu.blog.csdn.net/article/details/50951607

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。