Android: вычисление цвета динамически - PullRequest
0 голосов
/ 31 мая 2018

У меня есть класс Util, способный создавать цветовые коды (десятичные).

public class ColorUtils {

    private static final String RED = "ff0000";
    private static final String GREEN = "00ff00";
    private static final String BLUE = "0000ff";
    private static final String WHITE = "ffffff";
    private static final int RADIX = 16;

    public static int getColorShade(String deepShade, String lightShade, float percentage) {
        if (percentage > 100) {
            throw new RuntimeException("Percentage can not be more than 100");
        }
        int deepShadeCode = Integer.parseInt(deepShade, RADIX);
        int lightShadeCode = Integer.parseInt(lightShade, RADIX);
        int shadeDifference = deepShadeCode - lightShadeCode;
        int shadeOffset = (int) (shadeDifference * percentage)/100;
        return lightShadeCode + shadeOffset;
    }

    public static int getColorShade(String deepShade, float percentage) {
        return getColorShade(deepShade, WHITE, percentage);
    }

    public static int getRedColorShade(float percentage) {
        return getColorShade(RED, percentage);
    }

    public static int getGreenColorShade(float percentage) {
        return getColorShade(GREEN, percentage);
    }

    public static int getBlueColorShade(float percentage) {
        return getColorShade(BLUE, percentage);
    }

    public static int getWhite() {
        return Integer.parseInt(WHITE, RADIX);
    }
}

Есть ли способ преобразовать его в цвет Android?Все, что я могу узнать, это ContextCompat.getColor(this,R.color.yourcolor), но это будет принимать идентификатор ресурса во втором аргументе, я не хочу создавать цветные поддоны в color.xml.Есть ли работа вокруг?

1 Ответ

0 голосов
/ 31 мая 2018

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

@ColorInt int color = Color.rgb(getRedColorShade(percentage), getGreenColorShade(percentage), getBlueColorShade(percentage));

Ref здесь , на этот раз это довольноубедитесь, что этот метод добавлен с уровня API 1 и может использоваться вместо valueOf

...