Jak uzyskać kolor z szesnastkowego ciągu kolorów

Chciałbym użyć koloru z ciągu hexa, takiego jak "#FFFF0000", aby (powiedzmy) zmienić kolor tła układu. Color.HSVToColor wygląda na zwycięzcę, ale jako parametr przyjmuje float[].

Czy jestem w ogóle blisko rozwiązania?
Author: svick, 2011-03-09

12 answers

Try Color class method:

public static int parseColor (String colorString)

Z dokumentacja Androida :

Obsługiwane formaty to: #rrggbb # aarrggbb 'red', 'blue', 'green',' black',' white',' gray',' cyan',' magenta',' yellow',' lightgray','darkgray'

AndroidX: String.toColorInt()

 621
Author: jethro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-07-30 19:55:18

Try:

myLayout.setBackgroundColor(Color.parseColor("#636161"));
 266
Author: invisbo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-15 13:26:36

To pytanie pojawia się dla wielu wyszukiwań związanych z hex color, więc dodam podsumowanie tutaj.

Kolor z int

Kolory szesnastkowe przyjmują postać RRGGBB lub AARRGGBB (alfa, czerwony, zielony, niebieski). Z mojego doświadczenia wynika, że używając int bezpośrednio, musisz użyć pełnego AARRGGBB formularza. Jeśli masz tylko formę RRGGBB, po prostu przedrostek FF, aby Alfa (przezroczystość) była całkowicie nieprzezroczysta. Oto, jak ustawić go w kodzie. Użycie 0x na początku oznacza, że jest szesnastkowo, a nie w bazie 10.

int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);

Color from String

Jak zauważyli inni, możesz używać Color.parseColor w ten sposób

int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);

Zauważ, że łańcuch musi zaczynać się od #. Obsługiwane są zarówno formaty RRGGBB, jak i AARRGGBB.

Color from XML

Powinieneś w miarę możliwości pobierać kolory z XML. Jest to zalecana opcja, ponieważ znacznie ułatwia wprowadzanie zmian kolorów w aplikacji. Jeśli ustawisz wiele kolorów szesnastkowych w kodzie wtedy jest wielkim bólem próbować je później zmienić.

Android material design ma podniebienia kolorów z wartościami szesnastkowymi już skonfigurowanymi.

Te kolory motywów są używane w całej aplikacji i wyglądają tak:

colors=xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <color name="primary">#3F51B5</color>
  <color name="primary_dark">#303F9F</color>
  <color name="primary_light">#C5CAE9</color>
  <color name="accent">#FF4081</color>
  <color name="primary_text">#212121</color>
  <color name="secondary_text">#757575</color>
  <color name="icons">#FFFFFF</color>
  <color name="divider">#BDBDBD</color>
</resources>

Jeśli potrzebujesz dodatkowych kolorów, dobrą praktyką jest zdefiniowanie koloru w dwóch kroki w xml. Najpierw nazwij kolor wartości szesnastkowej, a następnie nazwij komponent aplikacji, który powinien uzyskać określony kolor. Ułatwia to późniejszą regulację kolorów. Ponownie, to jest w kolorach.xml .

<color name="orange">#fff3632b</color>
<color name="my_view_background_color">@color/orange</color>
Jeśli chcesz ustawić kolor w kodzie, wykonaj następujące czynności:]}
int myColor = ContextCompat.getColor(context, R.color.my_view_background_color);    
myView.setBackgroundColor(myColor);

Predefiniowane Kolory Androida

Klasa kolorów zawiera szereg predefiniowanych stałych kolorów. Możesz go używać w ten sposób.

int myColor = Color.BLUE;
myView.setBackgroundColor(myColor);

Inne kolory are

  • Color.BLACK
  • Color.BLUE
  • Color.CYAN
  • Color.DKGRAY
  • Color.GRAY
  • Color.GREEN
  • Color.LTGRAY
  • Color.MAGENTA
  • Color.RED
  • Color.TRANSPARENT
  • Color.WHITE
  • Color.YELLOW

Uwagi

 50
Author: Suragch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-12-25 04:26:37

Konwertuj ten łańcuch na int kolor, który może być użyty w setBackgroundColor i setTextColor

String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);

16 oznacza, że jest szesnastkowy, a nie zwykły 0-9. Wynik powinien być taki sam jak

int color = 0xFFFF0000;
 22
Author: 700 Software,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-09 16:12:51

To

int color =  Color.parseColor("colorstring");
 17
Author: Patricia Heimfarth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-26 10:38:09

Spróbuj tego:

vi.setBackgroundColor(Color.parseColor("#FFFF0000"));
 15
Author: MindBrain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-07 13:35:50

Używam tego i działa świetnie dla mnie do ustawiania dowolnego koloru chcę.

public static final int MY_COLOR = Color.rgb(255, 102, 153);

Ustaw kolory za pomocą 0-255 dla każdego czerwonego, zielonego i niebieskiego, a następnie w dowolnym miejscu, w którym chcesz użyć tego koloru, umieść MY_COLOR zamiast Color.Niebieski lub kolor.Czerwony lub dowolny inny kolor statyczny oferowany przez klasę kolorów.

Wystarczy wyszukać w Google wykres kolorów i można znaleźć Wykres z poprawnymi kodami RGB za pomocą 0-255.

 12
Author: Opy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-02 13:40:55

Plik XML zapisany w res/values / colors.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <color name="translucent_red">#80ff0000</color>
</resources>

Ten kod aplikacji pobiera zasób kolorów:

Resources res = getResources();
int color = res.getColor(R.color.opaque_red);

Ten układ XML stosuje kolor do atrybutu:

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="@color/translucent_red"
    android:text="Hello"/>
 6
Author: AZ_,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-09 04:13:43

W Xamarin Użyj tego

Control.SetBackgroundColor(global::Android.Graphics.Color.ParseColor("#F5F1F1"));
 6
Author: Shanmugasundharam,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-21 10:59:52

Spróbuj użyć zamiast tego 0xFFF000 i przekaż to do koloru.Metoda HSVToColor.

 5
Author: Dave Long,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-09 16:13:37

Jeśli zdefiniujesz kolor w XML i chcesz go użyć do zmiany koloru tła lub czegoś takiego, to API jest tym, którego szukasz:

 ((TextView) view).setBackgroundResource(R.drawable.your_color_here);

W mojej próbce użyłem go do TestView

 4
Author: M.Hefny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-27 21:25:06

Dla skróconego kodu szesnastkowego

int red = colorString.charAt(1) == '0' ? 0 : 255;
int blue = colorString.charAt(2) == '0' ? 0 : 255;
int green = colorString.charAt(3) == '0' ? 0 : 255;
Color.rgb(red, green,blue);
 0
Author: GTID,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-01-23 13:30:30