为了账号安全,请及时绑定邮箱和手机立即绑定

使用某个键在 android 中创建随机颜色(对于相同的键,它应该生成相同的颜色)

使用某个键在 android 中创建随机颜色(对于相同的键,它应该生成相同的颜色)

慕少森 2024-01-25 15:20:13
我正在开发一个聊天应用程序,为此,我需要为用户个人资料图片生成随机颜色。但我需要为同一个人生成相同的颜色。我有一个唯一的用户 ID。我不喜欢在生成颜色代码一次后保存颜色代码。所以,基本上我需要一种获取颜色代码的方法。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 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

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;

}


查看完整回答
反对 回复 2024-01-25
?
GCT1015

TA贡献1827条经验 获得超4个赞

首先,您需要传递整数作为函数的参数。String userId请使用代替int userId。如果您仍然想传递 String 类型作为参数,则需要将其解析为整数。


其次,您需要在数组中定义所需的所有颜色。


基本上你不能使用Java随机数内置函数,因为它总是会生成新的随机数,所以它不会满足你的需要。


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];

}


查看完整回答
反对 回复 2024-01-25
?
长风秋雁

TA贡献1757条经验 获得超7个赞

使用此功能,您可以从颜色代码生成随机颜色,但是如果您需要从用户获取颜色,则需要本地数据库的共享首选项值来保存用户的颜色


int getUserColourCode(String userId) {

  Random rnd = new Random(); 

   int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));      

 return color;

}


查看完整回答
反对 回复 2024-01-25
  • 3 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信