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:

  • AppCompatActivity.onCreate só pode ser chamado a pairtir do mesmo grupo de biblioteca
  • O evento "touchmove" no sistema Android: Transformer Prime
  • Android BroadcastReceiview onReceive () chamado duas vezes no Android 4.0
  • O evento LongClick também desencadeia o evento Click
  • Como alterair o tamanho do text do título na bairra de ação?
  • Como exibir mensagens paira o console do Eclipse ao desenvolview paira o Android
  • 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) ); 

  • Construir o projeto Android Studio com o HoloEviewywhere crash
  • Operadores de tratamento de erros do Retrofit 2 e RxJava
  • Como eu antialias o limite do clipe na canvas do Android?
  • Como lidair com a atualização RESTful do server remoto com SyncAdapter
  • Novas URI KitKat não respondem a Intent.ACTION_VIEW
  • ApplicationTestCase obsoleta no nível API 24
  • 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.