Как создать n цветов между двумя цветами android - PullRequest
0 голосов
/ 30 января 2020

Я перешел по этой ссылочной ссылке: android цвет между двумя цветами, в процентах?

, но здесь можно получить n цветов без передачи процентов.

Я пробовал два способа:

начальный цвет: (a, b, c) конечный цвет: (d, e, f) количество составляет 24

  1. Я использовал эту формулу

(a + (da) / 24, b + (eb) / 24, c + (f- c) / 24), (a + 2 * (da) / 24, b + 2 * (eb) / 24, c + 2 * (f- c) / 24) и (a + 3 * (da) / 24, b + 3 * (eb) / 24, c + 3 * (f- c) / 24) et c ...

, но не работает

Мои ожидаемые значения:

0 : 96,76,252
    - 1 : 75,93,255         
    - 2 : 56,111,255              
    - 3 : 37,129,252
    - 4 : 21,146,241
    - 5 : 8,163,226
    - 6 : 0,179,208
    - 7 : 0,192,186
    - 8 : 0,204,163
    - 9 : 1,213,140
    - 10 : 12,220,117
    - 11 : 26,224,95
    - 12 : 45,225,76  
    - 13 : 68,224,61
    - 14 : 92,221,50
    - 15 : 119,216,43
    - 16 : 146,210,41
    - 17 : 173,204,45
    - 18 : 198,197,53
    - 19 : 222,190,66
    - 20 : 242,184,82                                          
    - 21 : 255,179,102
    - 22 : 255,176,123
    - 23 : 255,174,146

1 Ответ

0 голосов
/ 30 января 2020

Вы можете получить случайный цвет из списка цветов следующим образом.

class RandomColorsPicker {private Stack changeColors, colors;

    public RandomColorsPicker() {
        colors = new Stack<>();
        changeColors =new Stack<>();
        changeColors.addAll(Arrays.asList(
                0xfff44336,0xffe91e63,0xff9c27b0,0xff673ab7,
                0xff3f51b5,0xff2196f3,0xff03a9f4,0xff00bcd4,
                0xff009688,0xff4caf50,0xff8bc34a,0xffcddc39
                )
        );
    }

    public int getColors() {
        if (colors.size()==0) {
            while(!changeColors.isEmpty())
                colors.push(changeColors.pop());
            Collections.shuffle(colors);
        }
        Integer color= colors.pop();
        changeColors.push(color);
        return color;
    }
}

и получить цвет с помощью этого

          RandomColorsPicker colors=new RandomColorsPicker();
            int color=colors.getColors();
            String hex = Integer.toHexString(color);
...