如何从颜色资源中获取color-int?

12 浏览
0 Comments

如何从颜色资源中获取color-int?

有没有办法从颜色资源中获取一个color-int?\n我想要获取在资源中定义的颜色(R.color.myColor)的红色、蓝色和绿色分量,以便我可以将三个滑动条的值设置为特定的水平。

0
0 Comments

如何从颜色资源中获取color-int?

问题的出现原因:在Android开发中,我们经常需要使用颜色资源来设置视图的背景颜色。但是,有时我们需要将颜色资源转换为color-int类型,以便进行一些其他操作。因此,问题是如何从颜色资源中获取color-int。

解决方法:可以使用ContextCompat类中的getColor()方法来获取color-int。具体步骤如下:

1. 首先,在values文件夹下的color.xml文件中定义颜色资源。例如,我们定义了一个名为"my_view_color"的颜色资源,其值为"#fff3632b"。

2. 然后,在代码中使用ContextCompat.getColor()方法来获取color-int。将上述定义的颜色资源作为参数传递给该方法,并将返回的color-int赋值给一个整型变量backgroundColor。

3. 最后,使用myView.setBackgroundColor()方法将获取到的color-int设置为视图的背景颜色。

以下是具体的代码示例:

int backgroundColor = ContextCompat.getColor(context, R.color.my_view_color);
myView.setBackgroundColor(backgroundColor);

通过上述步骤,我们可以从颜色资源中获取color-int,并将其应用于视图的背景颜色。

另外,如果需要在非Activity或Fragment类中使用getResources()方法,可以参考上述内容中提到的相关问题链接,了解如何在其他类中使用该方法。此外,getResources()方法也可以在实现了Context接口的任何类和View上使用。

相关链接:

- [How to set background color of a View](https://stackoverflow.com/questions/2173936)

- [Color docs](http://developer.android.com/reference/android/graphics/Color.html)

- [Color Style Design docs](http://developer.android.com/design/style/color.html)

- [Using getResources() in non-Activity class](http://stackoverflow.com/questions/7666589)

0
0 Comments

根据新的Android Support Library(以及此更新), 现在你应该调用:ContextCompat.getColor(context, R.color.name.color);。

根据文档:

public int getColor (int id)

该方法在API level 23中已弃用。

使用getColor(int, Theme)代替。

对于getResources().getColorStateList(id)也是同样的解决方法:

你需要像这样更改它:ContextCompat.getColorStateList(getContext(),id);

关于ThemeOverlay,使用最接近视图的上下文:

val color = ContextCompat.getColor(

closestView.context,

R.color.name.color

)

这样你可以根据ThemeOverlay获取正确的颜色。

特别是在同一个activity中使用不同的主题时,这是非常需要的。如果你想更多了解关于主题和样式的内容,可以参考这个演讲:Developing Themes with Style

对于那些不确定要填写什么主题的人,在新的方法中,Theme可以传入null,所以如果你不确定要传入什么主题,只需调用getColor(R.color.my_color, null)。

要确保你做得正确,尝试在activity的onCreate方法中调用它,然后要获取上下文,你需要调用getContext()或者只是"this"。

0
0 Comments

如何从颜色资源中获取color-int?

问题出现的原因是因为getColor(int id)方法在API23中被弃用了,需要使用其他方法来获取color-int。

解决方法是使用以下方法:

1. 使用getResources().getColor(R.color.idname)来获取color-int。这是一种常用的方法。

2. 使用ContextCompat.getColor(context, R.color.your_color)来获取color-int。这是在支持库23中添加的方法,适用于API23以上的版本。

3. 使用ResourcesCompat.getColor(getResources(), R.color.your_color, null)来获取color-int。这是一种适用于API23之前和之后的通用方法。你可以选择是否使用主题来获取color-int。

此外,还有一些其他的讨论和建议:

- 使用android.R.color.some_color来获取color-int的方法也是可以的。

- 不需要缓存结果,因为获取color-int的过程不会消耗太多的时间和资源。

- 可以将获取color-int的代码封装成一个方法,以提高代码的可读性。

- getColor()方法现在已经被弃用,可以使用ContextCompat.getColor(context, R.color.your_color)来代替。

- ContextCompat和ResourcesCompat之间没有实际的区别,如果没有实际区别,建议从答案中删除其中一个。

总之,获取color-int的方法有很多种,具体选择哪种方法取决于你的项目需求和API版本。

0