Создание случайного цвета в Android с некоторым ключом (для того же ключа он должен генерировать тот же цвет) - PullRequest
0 голосов
/ 01 ноября 2019

Я разрабатываю приложение для чата, для этого мне нужна генерация случайного цвета для картинки профиля пользователя. Но мне нужно создать один и тот же цвет для одного и того же человека. У меня есть уникальный идентификатор пользователя. Я не люблю сохранять код цвета после генерации кода цвета один раз. Итак, в основном мне нужен метод для получения цветового кода.

int getUserColourCode(String userId) {
   //code needed.
   //It should return random colour code (int) with respect to user id.
   //I would like to exclude light shade colours (dark and semi dark colours are preferred).
}

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 01 ноября 2019

int getUserColourCode (String userId) {StringBuilder input1 = new StringBuilder ();

input1.append(userId);
input1=input1.reverse();
String pair[]={"0","0","0","0","0","0","0","0"};
char[] character = input1.toString().toCharArray();

for(int i=0;i<character.length;i++)
{
  pair[i]=String.valueOf(character[i]);
}
int color = Color.argb((Integer.parseInt(pair[0]+pair[1])*2)+50, (Integer.parseInt(pair[2]+pair[3])*2)+50, (Integer.parseInt(pair[4]+pair[5])*2)+50, (Integer.parseInt(pair[6]+pair[7])*2)+50);
return color;

}

1 голос
/ 01 ноября 2019

Во-первых, вам нужно передать целое число в качестве аргумента вашей функции. Вместо String userId, пожалуйста, используйте int userId. Если вы все еще хотите передать тип String в качестве аргумента, вам нужно разобрать его в целое число.

Во-вторых, вам нужно определить все цвета, которые вы хотите в массиве.

В основном вы можетене используйте встроенную функцию Java Random number, потому что она всегда будет генерировать новое случайное число, поэтому оно не будет соответствовать вашим потребностям.

int getUserColourCode(String userId) {
    int id = Integer.parseInt(userId);

    //create integer color as much as you want,
    int[] colors = {Color.BLUE, Color.CYAN, Color.MAGENTA, Color.parseColor("#ff00f8")};

    int colorLength = colors.length - 1;
    int randomNumber = id % colorLength;
    return colors[randomNumber];
}

Если вы передаете целое число в качестве типа аргумента, вы можете использовать это:

int getUserColourCode(int userId) {

    //create integer color as much as you want,
    int[] colors = {Color.BLUE, Color.CYAN, Color.MAGENTA, Color.parseColor("#ff00f8")};

    int colorLength = colors.length - 1;
    int randomNumber = userId % colorLength;
    return colors[randomNumber];
}
0 голосов
/ 01 ноября 2019

Используя это, вы можете генерировать случайные цвета из цветового кода, но если вам нужно получить цвет от пользователя, вам нужно общее значение предпочтения для локальной базы данных, чтобы сохранить цвет пользователя

int getUserColourCode(String userId) {
  Random rnd = new Random(); 
   int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));      
 return color;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...