Android中实现根据资源名获取资源ID

前端技术 2023/09/09 Android

接触过Android开发的同学们都知道在Android中访问程序资源基本都是通过资源ID来访问。这样开发起来很简单,并且可以不去考虑各种分辨率,语言等不同资源显式指定。

痛点

但是,有时候也会有一些问题,比如我们根据服务器端的值取图片,但是服务器端绝对不会返回给我们的是资源id,最多是一种和文件名相关联的值,操作资源少的时候,可以维护一个容器进行值与资源ID的映射,但是多的话,就需要另想办法了。

便捷的方法

在这种情况下,使用文件名来得到资源ID显得事半功倍。 通过调用Resources的getIdentifier可以很轻松地得到资源ID。 几个简单的示例:

复制代码 代码如下:

Resources res = getResources();
final String packageName = getPackageName();
int imageResId = res.getIdentifier(\"ic_launcher\", \"drawable\", packageName);
int imageResIdByAnotherForm = res.getIdentifier(packageName + \":drawable/ic_launcher\", null, null);
 
int musicResId = res.getIdentifier(\"test\", \"raw\", packageName);
     
int notFoundResId = res.getIdentifier(\"activity_main\", \"drawable\", packageName);

Log.i(LOGTAG, \"testGetResourceIds imageResId = \" + imageResId
              + \";imageResIdByAnotherForm = \" + imageResIdByAnotherForm
              + \";musicResId=\" + musicResId
              + \";notFoundResId =\" + notFoundResId);

本文地址:https://www.stayed.cn/item/23657

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。