Czy istnieje jakiś sposób, aby wygenerować kolor z dowolnego ciągu znaków w Java/Android niczym funkcji/Hash Szyfrowanie?Android/Java: Konwersja dowolny ciąg do koloru (hex)
Przykład: ciąg "Home" generuje kolor jak "# FF1234".
String "Sky" generuje kolor jak "# 00CC33" ...
bez randomizacji. Tak, system będzie zawsze obliczyć te same kolory, które struny
Dzięki
EDIT: Struny są dowolnie definiowane przez użytkownika
Można zdefiniować HashMap prawdopodobnie gdzieś, że mapuje struny do kolorów, choć trzeba by wypełnić samemu. Domyślna klasa kolorów java ma już zdefiniowane domyślne kolory, ale nie jest to szalone jak "Sky".To rzeczy takie jak "Czerwony" i "LightGray" –
Oczywiście, możesz zdefiniować dowolną funkcję matematyczną, która ma łączyć znaki w 24-bitową (bez alpha) lub 32-bitową (jeśli chcesz mieć wartość alfa), a następnie zastosować ją jako kolor dla słowo. Funkcja skrótu również może działać i najprawdopodobniej zapewni lepszą dyspersję kolorów w całym zakresie kolorów (w dzisiejszych komputerach). Hash jak Dowolna funkcja matematyczna, która NIE korzysta z losowego wprowadzania spowoduje, że zawsze otrzymamy ten sam kolor dla tego ciągu wejściowego. Jedyną rzeczą, na którą można spojrzeć, jest wielkość liter. – trumpetlicks
@Hans - mapa HASH byłaby bardzo duża, gdyby jego wejście było dowolnym arbitralnym słowem. Lepiej obliczyć hasz i zastosować dowolną statyczną część (skrót będzie większy niż 32 lub 24 bity) bitów wyjściowych skrótu do wartości koloru. Mogłem zobaczyć potencjalnie za pomocą bardziej uproszczonego CRC lub czegoś podobnego, ale odległość między wartościami nie byłaby tak dobra, jak w przypadku HASH. – trumpetlicks