Android 我应该在sqlite中存储什么颜色?
我将东西存储在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,但这看起来很难看。有办法吗?您可以存储十六进制代码,并在设置颜色时使用它。
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。十六进制如何,并使用其他函数转换为您需要的任何其他格式?