CGColorGetComponents эквивалент в Android - PullRequest
0 голосов
/ 28 марта 2011

Я занимаюсь портированием приложения с Iphone на Android, связанного с цветами RGB.

Есть ли эквивалент для CGColorGetComponents в Android?

Ответы [ 2 ]

0 голосов
/ 23 февраля 2016

В Android есть такой способ, без использования (иногда раздражающие значения Hex):

public static float[] CGColorGetComponents(CGColorRef color) {

    float[] components = new float[4];

    int currentRed = Color.red(color);
    components[0] = currentRed / 255f;

    int currentGreen = Color.green(color);
    components[1] = currentGreen / 255f;

    int currentBlue = Color.blue(color);
    components[2] = currentBlue / 255f;

    int currentAlpha = Color.alpha(color);
    components[3] = currentAlpha / 255f;

    return components;
}

Для iOS и Android эквивалентные элементы, я предлагаю вам обратиться к http://docs.myappconverter.com/search.html?q=CGColor

PS: Сервис MyAppConverter также можно использовать бесплатно для преобразования приложения из iOS в исходный код Android, и, по крайней мере, все компоненты вашего приложения будут готовы к использованию вандроид.

0 голосов
/ 28 марта 2011

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

public int[] getColorComponents(int color)
{       
    int alpha = (color >> 24) & 0xff;
    int red = (color >> 16) & 0xff;
    int green = (color >> 8) & 0xff;
    int blue = color & 0xff;
    return new int[] { alpha, red, green, blue };
}

Если вам нужны поплавки, вы можете сделать что-то вроде этого

public float[] getColorComponents(int color)
{       
    int alpha = (color >> 24) & 0xff;
    int red = (color >> 16) & 0xff;
    int green = (color >> 8) & 0xff;
    int blue = color & 0xff;
    float a = (float) alpha / 255;
    float r = (float) red / 255;
    float g = (float) green / 255;
    float b = (float) blue / 255;
    return new float[] { a, r, g, b };
}

Если вы делаете это много раз (например, проходите по пикселям в растровом изображении), вы, вероятно, захотите использовать один массив и передать его, заменяя значения в методе вместо создания нового массива.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...