2016-01-12 133 views
1

如何選擇接觸徽章的顏色。使用什麼算法?Android棒棒糖接觸顏色

enter image description here

+0

我猜它只是隨機選擇。 – JonasCz

+0

@JonasCz但應用程序重啓後顏色將被保存。 – fisher3421

+0

是的,它保存隨機生成的顏色,當它第一次生成它們(當添加聯繫人時) – JonasCz

回答

4

它不保存。它使用聯繫人姓名字符串的哈希碼來確定顏色。

例子:

String name = "Harish"; 
int colors[] = new int[] { Color.RED, Color.GREEN, Color.BLUE}; 

int chosenColor = colors[Math.abs(name.hashCode()) % colors.length]; 

我從這個answer

1

瞭解到你可以嘗試這樣的顏色生成..

public class ColorGenerator { 

    public static ColorGenerator DEFAULT; 

    public static ColorGenerator MATERIAL; 

    static { 
     DEFAULT = create(Arrays.asList(
       //your list of default tints 
     )); 
     MATERIAL = create(Arrays.asList(
       //your list of material colors 
     )); 
    } 

    private final List<Integer> mColors; 
    private final Random mRandom; 

    public static ColorGenerator create(List<Integer> colorList) { 
     return new ColorGenerator(colorList); 
    } 

    private ColorGenerator(List<Integer> colorList) { 
     mColors = colorList; 
     mRandom = new Random(System.currentTimeMillis()); 
    } 

    public int getRandomColor() { 
     return mColors.get(mRandom.nextInt(mColors.size())); 
    } 

    public int getColor(Object key) { 
     return mColors.get(Math.abs(key.hashCode()) % mColors.size()); 
    } 
}