Помогите сохранить шестнадцатеричные цвета в виде целого числа в Java - PullRequest
2 голосов
/ 17 января 2011

Мне нужно представить шестнадцатеричный цвет #F0FFF0 в приложении для Android (хранится как целое число).Я сохраняю это как:

int color = 0xF0FFF0;

Но при рендеринге цвет кажется очень далеким (на самом деле он черный).Я неправильно храню цвет?

Ответы [ 4 ]

6 голосов
/ 13 июня 2012

Android использует шестнадцатеричные значения ARGB, которые отформатированы как #AARRGGBB. Эта первая пара букв, АА, представляет альфа-канал. Вы должны преобразовать свои десятичные значения непрозрачности в шестнадцатеричное значение. Вот шаги:

Альфа-процесс шестнадцатеричного значения

  1. Возьмите непрозрачность как десятичное значение и умножьте ее на 255. Таким образом, если у вас есть блок, непрозрачный на 50%, десятичное значение будет равно .5. Например: .5 х 255 = 127,5
  2. Дробь не будет преобразована в гекс, поэтому вы должны округлить свое число вверх или вниз до ближайшего целого числа. Например: 127,5 раундов до 128; 55,25 раундов до 55.
  3. Введите свое десятичное значение в десятичном и шестнадцатеричном преобразователе, например, http://www.binaryhexconverter.com/decimal-to-hex-converter, и преобразуйте свои значения
  4. Если вы вернете только одно значение, добавьте к нему ноль. Например, если вы пытаетесь получить непрозрачность 5% и проходите этот процесс, вы получите шестнадцатеричное значение D. Добавьте ноль перед ним, чтобы он выглядел как 0D.

Вот так вы найдете значение альфа-канала. Я позволил себе составить список ценностей для вас. Наслаждайтесь!

Значения шестнадцатеричной непрозрачности

  • 100% - FF
  • 95% - F2
  • 90% - E6
  • 85% - D9
  • 80% - CC
  • 75% - BF
  • 70% - B3
  • 65% - A6
  • 60% - 99
  • 55% - 8C
  • 50% - 80
  • 45% - 73
  • 40% - 66
  • 35% - 59
  • 30% - 4D
  • 25% - 40
  • 20% - 33
  • 15% - 26
  • 10% - 1А
  • 5% - 0D
  • 0% - 00
6 голосов
/ 17 января 2011

Возможно, вам нужно установить альфа тоже. то есть.

int color = 0xFFF0FFF0;

, где первые два FF представляют альфу как полностью непрозрачную. Увидеть: http://developer.android.com/reference/android/graphics/Color.html

3 голосов
/ 17 января 2011

Я всегда определял свои цвета альфа-значением, то есть:

int color = 0xFFF0FFF0;

Я не уверен, будет ли начальный FF неявным, если его опустить, однако.

1 голос
/ 17 января 2011

Не вы не сделали.

Вы должны добавить альфа-канал.

Для вашего примера:

int color = 0xFFF0FFF0

Я думаю, это работает!

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