Android 我应该在sqlite中存储什么颜色?

Android 我应该在sqlite中存储什么颜色?,android,sqlite,activeandroid,Android,Sqlite,Activeandroid,我将东西存储在sqlite数据库中。它的属性之一是颜色。当我显示这个时,我想 objLinearLayout.setBackgroundColor(some_int) 通常我会使用R.color.red来代替一些int。但是,我正在保留颜色,并且我认为每次运行应用程序时,R文件都会为red生成一个新id,这使得该方法不可行。我可以存储字符串表示,如“red”,并在java代码中检查颜色字符串并应用正确的R.color,但这看起来很难看。有办法吗?您可以存储十六进制代码,并在设置颜色时使用它。

我将东西存储在sqlite数据库中。它的属性之一是颜色。当我显示这个时,我想

objLinearLayout.setBackgroundColor(some_int)

通常我会使用R.color.red来代替一些int。但是,我正在保留颜色,并且我认为每次运行应用程序时,R文件都会为red生成一个新id,这使得该方法不可行。我可以存储字符串表示,如“red”,并在java代码中检查颜色字符串并应用正确的R.color,但这看起来很难看。有办法吗?

您可以存储十六进制代码,并在设置颜色时使用它。 比如
ll.setBackgroundColor(Color.parseColor(“#ffffff”)

下面是对另一个问题的评论的一些很好的解释


如果要在数据库中保存颜色名称,可以使用getIdentifier方法

例如:

Resources resources = getResources();
int colorId = resources.getIdentifier("your_color_name", "color", getPackageName()); 

您不应将R中的值(即
R.color.red
)存储在任何类型的永久存储器中。该值在每个应用程序构建时都会重新生成,因此如果进行更新,以前的
R.color.red
现在是
R.color.purple
或更糟的
R.layout.activity\u main


您可以将解析后的颜色存储在SQLite数据库中(
getResources().getColor(R.color.red)
),因为这只是表示颜色的整数,而不是指向颜色的指针。这样,如果您最终将
R.color.red
从#F00更改为#E00,则保存的值将为#F00。

十六进制如何,并使用其他函数转换为您需要的任何其他格式?