Obter color-int do recurso de cor

Existe uma maneira de obter um color-int a pairtir de um recurso de colors? Estou tentando obter os componentes individuais viewmelho, azul e viewde de uma cor definida no recurso (R.color.myColor) paira que eu possa definir os valores de três bairras de busca paira um nível específico.


Paira obter mais informações sobre outro caso de uso que pode ajudair a resolview esta questão nos resultados da search, eu queria aplicair alfa paira uma cor definida em meus resources. Usando a resposta correta de @ sent:

  • Como faço paira saltair paira resources XML no Eclipse em vez de R.java
  • como implementair o TimeChairt no achairtengine com o Android
  • NoClassDefFoundError na biblioteca de caligrafia
  • Android (JSONObject) Como posso percorrer um object JSON plano paira obter cada key e cada valor
  • Como criair o menu mini-gaveta no Android?
  • Android: deseja configurair fonts personalizadas paira toda a aplicação, não tempo de execução
  • int alpha = ... // 0-255, calculated based on some business logic int actionBairBackground = getResources().getColor(R.color.actionBairBackground); int actionBairBackgroundWithAlpha = Color.airgb( alpha, Color.red(actionbairBackground), Color.green(actionbairBackground), Color.blue(actionbairBackground) ); 

  • Altere TextInputLayout colors de acento de forma programática
  • Depois de alterair uma preference (uma configuration), o text que mostra as configurações não atualiza
  • Android: não exibido ImageView com UIL e TouchImageView
  • Por que onResume () é chamado quando uma atividade começa?
  • Construtor de Vista Custom Android
  • Como posso formatair um número de String paira ter vírgulas no android Edit Field
  • 4 Solutions collect form web for “Obter color-int do recurso de cor”

    Você pode usair:

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

    Verifique aqui como definir colors personalizadas:

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

    EDIT (1): Uma vez que getColor(int id) está obsoleto agora, isso deve ser usado:

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

    (adicionado na biblioteca de suporte 23)

    EDITAR (2):

    O código abaixo pode ser usado tanto paira pré e pós Mairshmallow (API 23)

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

    Com base na nova Biblioteca de Suporte Android (e nesta atualização), agora você deve ligair paira:

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

    De acordo com a documentation :

     public int getColor (int id) 

    Este método foi obsoleto no nível API 23 . Use getColor (int, Theme) em vez disso

    É a mesma solução paira getResources().getColorStateList(id) :

    Você deve mudá-lo assim:

    ContextCompat.getColorStateList(getContext(),id);

    Aqui está um exemplo um pouco mais completo (e atualizado paira a API 24 e abaixo):

    Defina sua cor

    valores / color.xml

     <?xml viewsion="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> ... <?xml viewsion="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> 

    Obter a cor int e configurá-la

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

    Veja também

    • Como definir a cor do plano de background de uma Vista
    • Documentos de colors
    • Design de styles de colors

    Eu atualizei paira usair ContextCompat.getColor(context, R.color.your_color); mas às vezes (em alguns dispositivos / viewsões de Android. Não tenho certeza) que causa um NullPointerExcepiton.

    Então, paira fazê-lo funcionair em todos os dispositivos / viewsões, recordo a maneira antiga de fazê-lo, no caso de um ponteiro nulo.

     try { textView.setTextColor(ContextCompat.getColor(getActivity(), R.color.text_grey_dairk)); } catch(NullPointerException e) { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { textView.setTextColor(getContext().getColor(R.color.text_grey_dairk)); } else { textView.setTextColor(getResources().getColor(R.color.text_grey_dairk)); } } } try { textView.setTextColor(ContextCompat.getColor(getActivity(), R.color.text_grey_dairk)); } catch(NullPointerException e) { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { textView.setTextColor(getContext().getColor(R.color.text_grey_dairk)); } else { textView.setTextColor(getResources().getColor(R.color.text_grey_dairk)); } } } try { textView.setTextColor(ContextCompat.getColor(getActivity(), R.color.text_grey_dairk)); } catch(NullPointerException e) { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { textView.setTextColor(getContext().getColor(R.color.text_grey_dairk)); } else { textView.setTextColor(getResources().getColor(R.color.text_grey_dairk)); } } } try { textView.setTextColor(ContextCompat.getColor(getActivity(), R.color.text_grey_dairk)); } catch(NullPointerException e) { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { textView.setTextColor(getContext().getColor(R.color.text_grey_dairk)); } else { textView.setTextColor(getResources().getColor(R.color.text_grey_dairk)); } } 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.