How can I get color-int from color resource?
You can use:
getResources().getColor(R.color.idname);
Check here on how to define custom colors:
http://sree.cc/google/android/defining-custom-colors-using-xml-in-android
EDIT(1):Since getColor(int id)
is deprecated now, this must be used :
ContextCompat.getColor(context, R.color.your_color);
(added in support library 23)
EDIT(2):
Below code can be used for both pre and post Marshmallow (API 23)
ResourcesCompat.getColor(getResources(), R.color.your_color, null); //without themeResourcesCompat.getColor(getResources(), R.color.your_color, your_theme); //with theme
Based on the new Android Support Library (and this update), now you should call:
ContextCompat.getColor(context, R.color.name.color);
According to the documentation:
public int getColor (int id)
This method was deprecated in API level 23.Use getColor(int, Theme) instead
It is the same solution for getResources().getColorStateList(id)
:
You have to change it like this:
ContextCompat.getColorStateList(getContext(),id);
EDIT 2019
Regarding ThemeOverlay
use the context of the closest view:
val color = ContextCompat.getColor( closestView.context, R.color.name.color)
So this way you get the right color based on your ThemeOverlay.
Specially needed when in same activity you use different themes, like dark/light theme. If you would like to understand more about Themes and Styles this talk is suggested: Developing Themes with Style
Define your color
values/color.xml
<?xml version="1.0" encoding="utf-8"?><resources> <!-- color int as #AARRGGBB (alpha, red, green, blue) --> <color name="orange">#fff3632b</color> ... <color name="my_view_color">@color/orange</color></resources>
Get the color int and set it
int backgroundColor = ContextCompat.getColor(context, R.color.my_view_color);// Color backgroundColor = ... (Don't do this. The color is just an int.)myView.setBackgroundColor(backgroundColor);