猿问

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

我正在开发一个聊天应用程序,为此,我需要为用户个人资料图片生成随机颜色。但我需要为同一个人生成相同的颜色。我有一个唯一的用户 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).

}

提前致谢。


慕少森
浏览 117回答 3
3回答

喵喵时光机

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++){&nbsp; 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;}

GCT1015

首先,您需要传递整数作为函数的参数。String userId请使用代替int userId。如果您仍然想传递 String 类型作为参数,则需要将其解析为整数。其次,您需要在数组中定义所需的所有颜色。基本上你不能使用Java随机数内置函数,因为它总是会生成新的随机数,所以它不会满足你的需要。int getUserColourCode(String userId) {&nbsp; &nbsp; int id = Integer.parseInt(userId);&nbsp; &nbsp; //create integer color as much as you want,&nbsp; &nbsp; int[] colors = {Color.BLUE, Color.CYAN, Color.MAGENTA, Color.parseColor("#ff00f8")};&nbsp; &nbsp; int colorLength = colors.length - 1;&nbsp; &nbsp; int randomNumber = id % colorLength;&nbsp; &nbsp; return colors[randomNumber];}如果您传递整数作为参数的类型,则可以使用:int getUserColourCode(int userId) {&nbsp; &nbsp; //create integer color as much as you want,&nbsp; &nbsp; int[] colors = {Color.BLUE, Color.CYAN, Color.MAGENTA, Color.parseColor("#ff00f8")};&nbsp; &nbsp; int colorLength = colors.length - 1;&nbsp; &nbsp; int randomNumber = userId % colorLength;&nbsp; &nbsp; return colors[randomNumber];}

长风秋雁

使用此功能,您可以从颜色代码生成随机颜色,但是如果您需要从用户获取颜色,则需要本地数据库的共享首选项值来保存用户的颜色int getUserColourCode(String userId) {&nbsp; Random rnd = new Random();&nbsp;&nbsp; &nbsp;int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));&nbsp; &nbsp; &nbsp;&nbsp;&nbsp;return color;}
随时随地看视频慕课网APP

相关分类

Java
我要回答