为什么R.color的显示颜色之间存在差异。<;彩色字符串>;android中的Color.parseColor(十六进制的colorString)?

为什么R.color的显示颜色之间存在差异。<;彩色字符串>;android中的Color.parseColor(十六进制的colorString)?,android,material-design,android-color,Android,Material Design,Android Color,为android view设置颜色代码的两种不同方法返回不同的结果,不知道为什么 正在尝试重新构造代码,并希望转换以下代码段: 方法1: Paint p = new Paint (); p.setColor(Color.parseColor("#D32F2F")); 在android中使用color.xml获取结果的小格式方法 方法2: Paint p = new Paint (); p.setColor(R.color.recyclerViewAnimationBackground);

为android view设置颜色代码的两种不同方法返回不同的结果,不知道为什么

正在尝试重新构造代码,并希望转换以下代码段: 方法1:

Paint p = new Paint ();
p.setColor(Color.parseColor("#D32F2F"));
在android中使用color.xml获取结果的小格式方法

方法2:

Paint p = new Paint ();
p.setColor(R.color.recyclerViewAnimationBackground);

问题是两者返回的结果应该是相同的,但不确定它们为什么不同

方法1:返回红色 方法2:返回紫色

我在开发工作中没有遇到阻碍,但希望在理解这背后的逻辑方面得到一些帮助

R.color.recyclerViewAnimationBackground 
为您提供R.java提供的资源id

Color.parseColor("#D32F2F")
为您提供正确的值,而不是任何id(来自R.java)

使用


R.color.XYZ
是标识颜色资源的资源标识符(实际上是一个
int

Color.parseColor(#D32F2F”)
实际上返回一个
Color

后者是你想要的。
R.color
值只能在引用颜色资源的情况下使用

android支持库包含以下代码以获取资源标识符的颜色:

int color = ContextCompat.getColor(context, colorResourceId);

:-)我喜欢我们同时添加支持库代码的事实,我真的喜欢你们两个都添加错了的事实-完全错过了拥有ContextCompat类的意义。@Amit:非常感谢,这很有帮助:)
int color = ContextCompat.getColor(context, colorResourceId);