在 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)