Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
#1

Цвет в строку

19.11.2013, 19:38. Просмотров 1277. Ответов 6
Метки нет (Все метки)

Подскажите функции пожалуйста!

Java
1
Color.parseColor("#88FF0000")
получает число с цветом доступным для SetColor(

А как из подобнго числа получить "#88FF0000"???
Можно ли получить "урезаный" цвет без прозрачости "#FF0000"???
Можно ли получить позрачность из числа цвета в число или в "88"?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.11.2013, 19:38
Ответы с готовыми решениями:

Как изменить цвет пункта ListView при нажатии на него и сохранять его цвет при проматывании списка?
Здравствуйте, подскажите, пожалуйста, как изменить цвет пункта ListView при...

Цвет файлов в VCS - поменять синий цвет имен файлов
Всем привет, вот каким образом можно поменять цвет имени файлов в навигаторе...

Поменять цвет!
Как поменять цвет! там где выделено красное линией!

Цвет ProgressBar
Здравствуйте. Знает кто нибудь откуда андроид берет цвет для прогрессбара? На...

Цвет TextView
Доброго времени суток! Подскажите пожалуйста, как сделать так чтобы...

6
Wenceslaus
Android Developer
130 / 130 / 6
Регистрация: 05.07.2013
Сообщений: 205
19.11.2013, 20:41 #2
Лучший ответ Сообщение было отмечено как решение

Решение

Tester64, можно:
Java
1
2
3
4
5
int color = Color.parseColor("#88FF0000");
 
String hexColor = String.format("#%06X", (0xFFFFFF & color)); // #FF0000
String hexColorWithAlpha = String.format("#%08X", (0xFFFFFFFF & color)); // #88FF0000
String alpha = String.format("%02X", (0xFF & Color.alpha(color))); // 88
3
Tester64
396 / 357 / 46
Регистрация: 22.05.2013
Сообщений: 2,518
20.11.2013, 03:56  [ТС] #3
Спасибо! То что нужно!
(думал что есть "встроенные" в андроид-яву функции для подобной работы с цветом)

Добавлено через 3 минуты
Не подскажете еще (по ходу возник вопрос):
Как проверить является ли строка цветом? Похоже эта тема тоже "рядом"...
Состоит ли строка из 6 или 8 хекс цифр?

Добавлено через 1 час 41 минуту
Пока проверяю через
Java
1
2
3
4
5
6
try {
  temp_color = Color.parseColor(ColorStr);
  // возвращаем "правильно"
}catch(Exception ex){
  // возвращаем "неправильно"
}
Но чуствую что есть более логичное и простое решение...
0
Wenceslaus
Android Developer
130 / 130 / 6
Регистрация: 05.07.2013
Сообщений: 205
20.11.2013, 12:16 #4
Tester64, судя по исходникам класса Color (а другие с цветом не работают), более простого решения нет
Color.parseColor(String)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    public static int parseColor(String colorString) {
        if (colorString.charAt(0) == '#') {
            // Use a long to avoid rollovers on #ffXXXXXX
            long color = Long.parseLong(colorString.substring(1), 16);
            if (colorString.length() == 7) {
                // Set the alpha value
                color |= 0x00000000ff000000;
            } else if (colorString.length() != 9) {
                throw new IllegalArgumentException("Unknown color");
            }
            return (int)color;
        } else {
            Integer color = sColorNameMap.get(colorString.toLowerCase(Locale.US));
            if (color != null) {
                return color;
            }
        }
        throw new IllegalArgumentException("Unknown color");
    }

хотя можно проверить регуляркой (дополнительно проверив цвета в формате #RGB и #ARGB):
Java
1
2
3
4
5
6
7
public static boolean isColor(String hex) {
    final String HEX_PATTERN = "^#([A-Fa-f0-9]{3}|[A-Fa-f0-9]{4}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{8})$";
 
    Pattern pattern = Pattern.compile(HEX_PATTERN);
    Matcher matcher = pattern.matcher(hex);
    return matcher.matches();
}
или не мучатся и сделать так:
Java
1
2
3
4
5
6
7
8
public static boolean isColor(String hex) {
    try {
        int temp_color = Color.parseColor(hex);
        return true;
    } catch (Exception ex) {
        return false;
    }
}
1
sirik2012
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 45
11.03.2014, 13:08 #5
Чтобы не создавать новую тему, немного понекропостю)

Есть некая проблема с цветом.
Если писать напрямую в канвасе, то все отлично:
PHP
1
paint.setColor(Color.parseColor("#FF0808"));
Но если написать примерно так:
PHP
1
2
3
String CC;
CC = "#FF0808";
paint.setColor(Color.parseColor(CC));
Цвет возвращает 0. Интересно почему так происходит?
0
angryrobot
Командир зеленых роботов
348 / 285 / 54
Регистрация: 08.10.2013
Сообщений: 565
11.03.2014, 13:42 #6
Цитата Сообщение от sirik2012 Посмотреть сообщение
Интересно почему так происходит?
Похоже на волшебство, у меня в обоих случаях одно и то же число возвращается. Покажите код полностью, попробуем разобраться.
0
sirik2012
0 / 0 / 0
Регистрация: 13.05.2013
Сообщений: 45
11.03.2014, 13:59 #7
Уже нашел ошибку, вставлял перевод в другой кусок кода (смутно написал)).
Спасибо
0
11.03.2014, 13:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2014, 13:59

Цвет заголовка в ActionBar
Здравствуйте! Подскажите пожалуйста как можно изменить цвет заголовка в...

Цвет item в listview
учусь работать с listview и наткнулся на такую проблему: когда проверял в...

Установить цвет checkbox
Есть такой цвет <?xml version="1.0" encoding="utf-8"?> <selector...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru