Chciałbym użyć koloru z łańcucha szesnastkowego, takiego jak "#FFFF0000"(powiedzmy) zmiana koloru tła układu.
Color.HSVToColorwygląda jak zwycięzca, ale wymaga float[]parametru.
Tak, po prostu zrób: if(colorString.length() == 4) { colorString = "#" + StringUtils.repeat(colorString.substring(1, 1), 1) + StringUtils.repeat(colorString.substring(2, 2), 1) + StringUtils.repeat(colorString.substring(3, 3), 1) }popraw mnie, jeśli się mylę
xdevs23,
6
Aby dodać do kodu @ xdevs23, zmień warunek if na to:if(colorString.length() == 4 && colorString[0] == '#')
Zac
Twoja odpowiedź byłaby lepsza, gdybyś nie tylko pokazał funkcję, ale także jak z niej korzystać: MyView.setBackgroundColor (Color.parseColor ("# 123456");
Yvonne Marggraf
int red = colorString.charAt (1) == '0'? 0: 255; int niebieski = colorString.charAt (2) == '0'? 0: 255; int zielony = colorString.charAt (3) == '0'? 0: 255; Color.rgb (czerwony, niebieski, zielony);
jeśli używasz Xamarin .. kodem jest ten Android.Graphics.Color.ParseColor („# 636161”) z „P” do Upper
Igor Monteiro
38
To pytanie pojawia się w przypadku wielu wyszukiwań związanych z kolorem szesnastkowym, dlatego dodam tutaj streszczenie.
Kolor od wew
Kolory heksadecymalne mają postać RRGGBBlub AARRGGBB(alfa, czerwony, zielony, niebieski). Z mojego doświadczenia wynika, że korzystając intbezpośrednio, musisz użyć pełnego AARRGGBBformularza. Jeśli masz tylko RRGGBBformularz, po prostu go poprzedź, FFaby alfa (przezroczystość) była całkowicie nieprzezroczysta. Oto, jak ustawić to w kodzie. Używanie 0xna początku oznacza, że jest szesnastkowy, a nie bazowy 10.
int myColor =0xFF3F51B5;
myView.setBackgroundColor(myColor);
Kolor ze sznurka
Jak zauważyli inni, możesz Color.parseStringtak używać
int myColor =Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);
Pamiętaj, że ciąg musi zaczynać się od #. Zarówno RRGGBBi AARRGGBBformaty są obsługiwane.
Kolor z XML
W miarę możliwości powinieneś pobierać kolory z XML. Jest to zalecana opcja, ponieważ znacznie ułatwia wprowadzanie zmian kolorów w aplikacji. Jeśli ustawisz wiele kolorów heksadecymalnych w całym kodzie, trudno będzie później je zmienić.
Projekt materiału dla Androida ma podniebienie kolorów z już skonfigurowanymi wartościami szesnastkowymi.
Jeśli potrzebujesz dodatkowych kolorów, dobrą praktyką jest zdefiniowanie koloru w dwóch krokach w xml. Najpierw nazwij kolor wartości heksadecymalnej, a następnie nazwij komponent aplikacji, który powinien otrzymać określony kolor. Ułatwia to późniejsze dostosowanie kolorów. Ponownie, to jest w colors.xml .
Następnie, 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 Color zawiera szereg predefiniowanych stałych kolorów. Możesz użyć tego w ten sposób.
int myColor =Color.BLUE;
myView.setBackgroundColor(myColor);
Inne kolory to
Color.BLACK
Color.BLUE
Color.CYAN
Color.DKGRAY
Color.GRAY
Color.GREEN
Color.LTGRAY
Color.MAGENTA
Color.RED
Color.TRANSPARENT
Color.WHITE
Color.YELLOW
Notatki
Szybkim sposobem na znalezienie kolorów szesnastkowych jest otwarcie okna dialogowego wyboru kolorów w Gimp (lub innym oprogramowaniu do edycji zdjęć).
jak mogę przekonwertować kolor ciągu = "80000000"; do int kolor =?
Ashish Sahu
Myślę, że wersja łańcuchowa powinna być, #80000000w którym to przypadku będzie wersja int int color = 0x80000000;. Jeśli to nie zadziała, opublikuj nowe pytanie z większą ilością szczegółów, aby więcej osób niż ja to zauważyło. Pamiętaj, że #80000000jest to półprzezroczysty czarny kolor.
Bryan Field
Wiem, że int będzie int kolor = 0x80000000, ale moim problemem jest sposób konwersji ... Ale teraz rozwiążę swój problem z int color = parseColor ("#" + "80000000"); ... dzięki za odpowiedź.
Ashish Sahu
Mam wyjątek przy użyciu kodu: java.lang.NumberFormatException: Niepoprawny int: „FFFF0000”
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, po prostu wstaw MY_COLOR zamiast Color.BLUE lub Color.RED lub dowolnego innego statycznego koloru oferowanego przez klasę Color.
Wystarczy wyszukać w Google tabelę kolorów, aby znaleźć tabelę z poprawnymi kodami RGB za pomocą 0-255.
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);
Odpowiedzi:
Wypróbuj
Color
metodę klasową:Z dokumentacji Androida :
źródło
#000
wartości?if(colorString.length() == 4) { colorString = "#" + StringUtils.repeat(colorString.substring(1, 1), 1) + StringUtils.repeat(colorString.substring(2, 2), 1) + StringUtils.repeat(colorString.substring(3, 3), 1) }
popraw mnie, jeśli się mylęif(colorString.length() == 4 && colorString[0] == '#')
Próbować:
źródło
To pytanie pojawia się w przypadku wielu wyszukiwań związanych z kolorem szesnastkowym, dlatego dodam tutaj streszczenie.
Kolor od wew
Kolory heksadecymalne mają postać
RRGGBB
lubAARRGGBB
(alfa, czerwony, zielony, niebieski). Z mojego doświadczenia wynika, że korzystającint
bezpośrednio, musisz użyć pełnegoAARRGGBB
formularza. Jeśli masz tylkoRRGGBB
formularz, po prostu go poprzedź,FF
aby alfa (przezroczystość) była całkowicie nieprzezroczysta. Oto, jak ustawić to w kodzie. Używanie0x
na początku oznacza, że jest szesnastkowy, a nie bazowy 10.Kolor ze sznurka
Jak zauważyli inni, możesz
Color.parseString
tak używaćPamiętaj, że ciąg musi zaczynać się od
#
. ZarównoRRGGBB
iAARRGGBB
formaty są obsługiwane.Kolor z XML
W miarę możliwości powinieneś pobierać kolory z XML. Jest to zalecana opcja, ponieważ znacznie ułatwia wprowadzanie zmian kolorów w aplikacji. Jeśli ustawisz wiele kolorów heksadecymalnych w całym kodzie, trudno będzie później je zmienić.
Projekt materiału dla Androida ma podniebienie kolorów z już skonfigurowanymi wartościami szesnastkowymi.
Te kolory motywów są używane w całej aplikacji i wyglądają tak:
colors.xml
Jeśli potrzebujesz dodatkowych kolorów, dobrą praktyką jest zdefiniowanie koloru w dwóch krokach w xml. Najpierw nazwij kolor wartości heksadecymalnej, a następnie nazwij komponent aplikacji, który powinien otrzymać określony kolor. Ułatwia to późniejsze dostosowanie kolorów. Ponownie, to jest w colors.xml .
Następnie, jeśli chcesz ustawić kolor w kodzie, wykonaj następujące czynności:
Predefiniowane kolory Androida
Klasa Color zawiera szereg predefiniowanych stałych kolorów. Możesz użyć tego w ten sposób.
Inne kolory to
Color.BLACK
Color.BLUE
Color.CYAN
Color.DKGRAY
Color.GRAY
Color.GREEN
Color.LTGRAY
Color.MAGENTA
Color.RED
Color.TRANSPARENT
Color.WHITE
Color.YELLOW
Notatki
źródło
Konwertuj ten ciąg na
int
kolor, którego można używać wsetBackgroundColor
isetTextColor
16 oznacza, że jest szesnastkowy, a nie zwykłe 0-9. Wynik powinien być taki sam jak
źródło
#80000000
w którym to przypadku będzie wersja intint color = 0x80000000;
. Jeśli to nie zadziała, opublikuj nowe pytanie z większą ilością szczegółów, aby więcej osób niż ja to zauważyło. Pamiętaj, że#80000000
jest to półprzezroczysty czarny kolor.Jego
źródło
Spróbuj tego:
źródło
Używam tego i działa mi świetnie do ustawiania dowolnego koloru, jaki chcę.
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, po prostu wstaw MY_COLOR zamiast Color.BLUE lub Color.RED lub dowolnego innego statycznego koloru oferowanego przez klasę Color.
Wystarczy wyszukać w Google tabelę kolorów, aby znaleźć tabelę z poprawnymi kodami RGB za pomocą 0-255.
źródło
W Xamarin Użyj tego
źródło
Plik XML zapisany w res / values / colors.xml:
Ten kod aplikacji pobiera zasób koloru:
Ten układ XML stosuje kolor do atrybutu:
źródło
Spróbuj zamiast tego użyć 0xFFF000 i przekaż to do metody Color.HSVToColor.
źródło
Jeśli zdefiniujesz kolor w pliku XML i chcesz go użyć do zmiany koloru tła lub czegoś innego, ten interfejs API jest tym, którego szukasz:
W mojej próbce użyłem go do TestView
źródło
Skrócony kod szesnastkowy
źródło