在 Android 开发中,资源(如字符串、颜色等)通常存储在 res 文件夹中,并通过资源 ID 进行访问。资源 ID 是一个整型值,用于唯一标识资源,若需要将资源转换为整型值,通常是指获取资源 ID 或从资源中提取整型数据。
1、getIdentifier 方法动态获取资源 ID
使用 getResources().getIdentifier() 方法可以将资源(如字符串、颜色等)的名称转换为对应的资源 ID(整型值),但是这种动态获取方式的性能较低,建议尽量避免频繁使用。
如果找到对应的资源,返回资源的 ID(整型值),未找到则返回 0。
// 文本资源名称,对应 R.string.test_resourceval resourceName = "test_resource"val resourceId = resources.getIdentifier(resourceName, "string", packageName)if (resourceId != 0) {binding.textview.text = getString(resourceId)}// 颜色资源,对应 R.color.teal_200val colorResource = "teal_200"val colorId = resources.getIdentifier(colorResource, "color", packageName)if (colorId != 0) {val color = resources.getColor(colorId, null)binding.textview.setTextColor(color)}
2、从颜色资源中获取整型值
颜色资源在 Android 中是以整型值存储的( ARGB 值),若在 res/values/colors.xml 中定义内容:
<resources><color name="teal_200">#FF03DAC5</color></resources>
在代码中获取颜色整型值的方式如下:
val color = resources.getColor(R.color.teal_200, null)textview.setTextColor(color)