Obtener color-int del recurso de color

¿Hay una manera de obtener un color-int de un recurso de color? Estoy intentando conseguir los componentes rojos, azules y verdes individuales de un color definido en el recurso (R.color.myColor) de modo que pueda fijar los valores de tres barras de búsqueda a un nivel específico.


Para obtener más información sobre otro caso de uso que pueda ayudar a plantear esta pregunta en los resultados de búsqueda, quería aplicar alfa a un color definido en mis recursos. Utilizando la respuesta correcta de @ sat:

int alpha = ... // 0-255, calculated based on some business logic int actionBarBackground = getResources().getColor(R.color.actionBarBackground); int actionBarBackgroundWithAlpha = Color.argb( alpha, Color.red(actionbarBackground), Color.green(actionbarBackground), Color.blue(actionbarBackground) ); 

5 Solutions collect form web for “Obtener color-int del recurso de color”

Puedes usar:

 getResources().getColor(R.color.idname); 

Compruebe aquí cómo definir colores personalizados:

http://sree.cc/google/android/defining-custom-colors-using-xml-in-android

EDIT (1): Debido a que getColor(int id) está obsoleto ahora, debe usarse:

 ContextCompat.getColor(context, R.color.your_color); 

(Añadido en la biblioteca de soporte 23)

EDITAR (2):

Debajo del código se puede utilizar tanto para pre y post Marshmallow (API 23)

 ResourcesCompat.getColor(getResources(), R.color.your_color, null); //without theme ResourcesCompat.getColor(getResources(), R.color.your_color, your_theme); //with theme 

Basado en la nueva Biblioteca de soporte de Android (y esta actualización), ahora debe llamar a:

ContextCompat.getColor(context, R.color.name.color);

Según la documentación :

 public int getColor (int id) 

Este método fue obsoleto en API nivel 23 . Use getColor (int, Theme) en su lugar

Es la misma solución para getResources().getColorStateList(id) :

Tienes que cambiarlo así:

ContextCompat.getColorStateList(getContext(),id);

Aquí hay un ejemplo algo más completo (y actualizado para la API 24 y siguientes):

Defina su color

Valores / 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> 

Obtener el color int y configurarlo

 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); 

Ver también

  • Cómo configurar el color de fondo de una vista
  • Documentos de color
  • Diseño de estilo de color Documentos

He actualizado para utilizar ContextCompat.getColor(context, R.color.your_color); Pero a veces (en algunos dispositivos / versiones de Android, no estoy seguro) que causa un NullPointerExcepiton.

Así que para que funcione en todos los dispositivos / versiones, vuelvo a la antigua forma de hacerlo, en el caso de un puntero nulo.

 try { textView.setTextColor(ContextCompat.getColor(getActivity(), R.color.text_grey_dark)); } catch(NullPointerException e) { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { textView.setTextColor(getContext().getColor(R.color.text_grey_dark)); } else { textView.setTextColor(getResources().getColor(R.color.text_grey_dark)); } } 

Utilice el método ResourcesCompat.getColor , aunque tiene parámetros bastante detallados.

Si utiliza un solo tema en su aplicación, puede simplificar la referencia de colores en el código ( "¿Cómo puedo obtener mi color ahora?" ), Puede utilizar una clase personalizada con todos los enfoques específicos del marco Android. Utilícela como myView.setBackgroundColor(Color.getMyRed()) .

  1. En AndroidManifest.xml nombre su aplicación :

     <application android:name="com.my_site.Application" ...> </application> 
  2. Cree una clase global de ayuda para su aplicación en la ruta com.my_site para obtener contexto y recursos en cualquier método estático :

     import android.content.Context; public class Application extends android.app.Application { private static Context context; public static Context getContext() { return Application.context; } public void onCreate() { super.onCreate(); Application.context = getApplicationContext(); } } 
  3. Cree una clase de color personalizada con métodos getter estáticos:

     import android.support.v4.content.res.ResourcesCompat; import com.my_site.mobile.R; /** * Simplify getting colors. */ public class Color { public static int getMyRed() { return ResourcesCompat.getColor( com.my_site.Application .getContext() .getResources(), R.color.my_red, null); } } 
  • El lienzo SurfaceView de Android produce colores incorrectos
  • ¿Cómo obtener colores del sistema Android?
  • Translúcido StatusBar con el color dinámico ActionBar en Android
  • Cambiar el color del puntero del cursor EditText de Android mediante programación
  • Android obtiene el color como valor de cadena
  • Cómo cambiar el color de texto predeterminado mediante un tema personalizado?
  • ¿Cómo configurar el color / estilo personalizado de ActionBar?
  • Android cambia el color de la barra de progreso Horizonal
  • Android: selector de texto personalizado
  • Android: el relleno dejó un mapa de bits con color blanco
  • Cómo cambiar el cuadro de diálogo de alerta divider color android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.