You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Android的colors.xml资源创建int类型的颜色枚举类

方案1:枚举存储颜色资源ID,使用时再解析(最推荐,无需全局Context)

你不需要在枚举定义阶段就解析出实际色值,只需要存储对应colors.xml的资源ID即可,使用枚举的场景大概率可以拿到Context(比如Activity、Fragment、View相关逻辑),用的时候再解析就能得到目标色值,还可以自动适配不同主题、深色模式、配置变更下的颜色定义:

enum class NotificationType(@ColorRes val colorResId: Int){
    DANGER(R.color.notification_danger),
    WARNING(R.color.notification_warning),
    INFO(R.color.notification_info),
    SUCCESS(R.color.notification_success)
}

使用示例:

  • 获取Int类型色值:val dangerColor = ContextCompat.getColor(context, NotificationType.DANGER.colorResId)
  • 获取Color对象:val dangerColorObj = Color.valueOf(ContextCompat.getColor(context, NotificationType.DANGER.colorResId))

方案2:全局Application Context预解析(无需每次使用传Context)

如果确实希望枚举里直接存储解析完成的Int色值,可以先在自定义Application中缓存全局Context实例,枚举初始化时直接调用全局Context解析资源:

  1. 先自定义Application类:
class MyApp : Application() {
    companion object {
        lateinit var appContext: Context
            private set
    }

    override fun onCreate() {
        super.onCreate()
        appContext = this
    }
}
  1. 在AndroidManifest.xml的application标签中声明自定义Application:android:name=".MyApp"
  2. 修改枚举类实现:
enum class NotificationType(val color: Int){
    DANGER(ContextCompat.getColor(MyApp.appContext, R.color.notification_danger)),
    WARNING(ContextCompat.getColor(MyApp.appContext, R.color.notification_warning)),
    INFO(ContextCompat.getColor(MyApp.appContext, R.color.notification_info)),
    SUCCESS(ContextCompat.getColor(MyApp.appContext, R.color.notification_success))
}

注意:需要保证枚举的第一次初始化是在Application的onCreate执行完成之后,否则会触发未初始化异常。


方案3:无需Context直接硬编码色值(仅适用于无需适配多配置的场景)

如果你的颜色不需要随主题、深色模式等配置变化,也不想依赖Context,可以直接把colors.xml中的十六进制色值转成ARGB Int硬编码到枚举中:

enum class NotificationType(val color: Int){
    DANGER(0xFFF97068.toInt()),
    WARNING(0xFFD1D646.toInt()),
    INFO(0xFFBEBEBE.toInt()),
    SUCCESS(0xFF76D13A.toInt())
}

需要Color对象时直接调用Color.valueOf(NotificationType.DANGER.color)即可,全程不需要Context参与。

内容的提问来源于stack exchange,提问作者Raj Rajput

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:39:03