Страницы

Поиск по вопросам

Показаны сообщения с ярлыком color. Показать все сообщения
Показаны сообщения с ярлыком color. Показать все сообщения

воскресенье, 15 марта 2020 г.

Как изменить цвет ToggleButton в Андроид?

#android #button #color


По умолчанию (по крайней мере, у меня) кнопка ToggleButton имеет тёмно-серый цвет,
индикатор включения (полоска внизу) - почти чёрный.

При нажатии на кнопку она кратковременно подсвечивается ярко-синим, индикатор становится
ярко-синим.

При изменении свойства background меняется цвет всей кнопки, включая индикатор. И
никакой подсветки при нажатии.

Вопрос: как изменить цвет кнопки, не затрагивая индикатор, и чтоб осталась цветовая
реакция на нажатие?

Ну и, если возможно, изменить цвет индикатора..
    


Ответы

Ответ 1



попробуйте так создаете файл colors.xml в папке res/values: #ff0000 #00ff00 В папке drawable, создается файл my_btn_toggle.xml: и в xml добавляем ToggleButton в виде: android:background="@drawable/my_btn_toggle источник есть вариант создать свой ToggleButton файл activity_main.xml файл res/drawable/toggle_selector.xml файл res/drawable/toggle_state_on.xml файл res/drawable/toggle_state_off.xml результат будет примерно так источник

Ответ 2



Слева - кнопка по умолчанию, справа - как нужно. Можно, конечно, нарисовать свои изображения, создать собственный элемент... Неужели нет простой возможности изменить цвет фона, не затрагивая полоску-индикатор???

пятница, 13 марта 2020 г.

Как изменить цвет для svg?

#css #svg #color


Я не знаю как менять цвет с помощью css для изображения в формате svg.

Источник (изображения): http://www.flaticon.com/free-icon/home-web-page_12168#term=home&page=1&position=27

Пробовал так:

svg {fill: #008000;}


Не получилось почему-то.
    


Ответы

Ответ 1



Все зависит от того как вы его вставляете на страницу, а вообще если по-простому через src=svg.svg, то можно так:

среда, 4 марта 2020 г.

Изменение цвета линий в ListView

#java #android #listview #color


Как изменить только цвет линий(полосок) в ListView?
    


Ответы

Ответ 1



В файле разметки: Свойством android:divider устанавливаем цвет разделителя: android:divider="#RRGGBB" Вместе с этим необходимо установить высоту разделителя свойством android:dividerHeight (иначе разделитель не будет виден): android:dividerHeight="4px" Полный пример: В коде Используя методы ListView.setDivider, ListView.setDividerHeight и один из классов градиента: ColorDrawable для обычного разделителя: list.setDivider(new ColorDrawable(0xAARRGGBB)); list.setDividerHeight(4); (используя context.getResources().getColor(R.color.некоторый_id) можно получить цвет, заданный в ресурсах) GradientDrawable: ListView list = ... int[] colors = {0, 0xFFFF0000, 0}; // красный цвет для примера list.setDivider(new GradientDrawable(Orientation.RIGHT_LEFT, colors)); list.setDividerHeight(4); В обоих сначала нужно установить цвет разделителя, а затем его высоту, иначе разделитель не будет виден.

понедельник, 24 февраля 2020 г.

Binding color to constants class

#c_sharp #wpf #binding #color #const


Не могу прибиндить цветовую константу, которая находится в другой dll-ке.

"/>


Студия ругается на плохой код и  не хочет ничего делать. И принимает только объект,
а стринг не хочет. Как я понял, нужен конвертер.

Есть ли стандартный, или самому писать? (если можно, пример).
    


Ответы

Ответ 1



Ссылки на статические свойства нужно давать не через Binding, а через x:Static: При этом у вас, разумеется, должно быть правильно объявлено пространство имён constants, что-то вроде xmlns:constants="clr-namespace:Namespace.In.Assembly;assembly=Your.Assembly.Name" Не забудьте убедиться, что ваша сборка с константами называется Your.Assembly.Name, в ней в пространстве имён Namespace.In.Assembly находится public-класс ColorConstants, у которого есть статическое свойство (а не поле!) Black, у которого хотя бы getter объявлен как public. Для случая, когда ваш x:Static обладает неправильным типом (у вас строка, а ожидается Color), вам нужно применить конвертер. Самый простой синтаксически способ — написать свой MarkupExtension в замену x:Static, который заодно конвертировал бы значение в нужный тип стандартным конвертером. Итак: public class SmartStaticExtension : StaticExtension { public SmartStaticExtension(string member) : base(member) { } public override object ProvideValue(IServiceProvider serviceProvider) { // получим значение стандартного x:Static object value = base.ProvideValue(serviceProvider); // попытаемся вычислить тип, к которому надо привести IProvideValueTarget target = serviceProvider.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget; if (target != null) { Type targetType = typeof(object); // если целевое свойство - DependencyProperty DependencyProperty dp = target.TargetProperty as DependencyProperty; if (dp != null) { targetType = dp.PropertyType; // берём тип у него } else { // целевое свойство - обыкновенное свойство, используем рефлексию PropertyInfo pi = target.TargetProperty as PropertyInfo; if (pi != null) targetType = pi.PropertyType; } // получаем стандартный конвертер: TypeConverter converter = TypeDescriptor.GetConverter(targetType); // и конвертируем value = converter.ConvertFrom(value); } return value; } } Имея такой конвертер, можно написать (разумеется, пространство имён local должно указывать туда, где определён SmartStaticExtension). Работает как со строками ("LightCyan") так и с RGB-константами ("#708090").

четверг, 13 февраля 2020 г.

Как увидеть цвет?

#color #android #java


Нашел в коде 2 цвета,никак не могу их увидеть 0x00FFFFFF и 0x55000000 color picker
не помогает, не подскажите как их посмотреть, может быть код цвета не целиком нужно
вбивать?    


Ответы

Ответ 1



0x00FFFFFF - полностью прозрачный белый цвет - вы его не увидите 0x55000000 - чуть чуть видимый серый цвет - вы увидите только затенение над тем где этот цвет лежит

Ответ 2



Просто так это не увидеть. В данном случае нужно понимать, что такое альфаканал. Если элемент с цветом 0x00FFFFFF наложить на другой, то элемент снизу будет "просвечиваться". Так что цвет у верхнего элемента будет такой же, как и у нижнего. Если элемент с цветом 0x55000000 наложить на другой, то он затемнит на треть нижележащий. Формула складывания цвета простая - результирующий цвет = фон * (1-альфаканал) + передний_цвет * альфаканал. альфаканал используется у накладываемого пискеля. Так как обычно альфаканал равен 0xFF, то накладываемый пиксель закрывает собой нижний. табличка: 0xFF = 1 0x80 = 0.5 0x55 = 0.33 (1/3). 0x00 = 0

воскресенье, 2 февраля 2020 г.

Как в TextView установить разный цвет для каждого символа

#android #textview #color #android_textview


Есть к примеру текст "10/5" и как в TextView сделать чтоб к примеру число 10 было
зеленым цветом, слэш серым, а число 5 красным
    


Ответы

Ответ 1



Можно избежать использования HTML при помощи такого способа: TextView TV = (TextView)findViewById(R.id.mytextview01); Spannable word = new SpannableString("Your message"); word.setSpan(new ForegroundColorSpan(Color.BLUE), 0, word.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); TV.setText(word); Spannable wordTwo = new SpannableString("Your new message"); wordTwo.setSpan(new ForegroundColorSpan(Color.RED), 0, wordTwo.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); TV.append(wordTwo);

Ответ 2



TextView поддерживает простейшие теги HTML, вроде . Использовать можно так: textView.setText(HTML.fromHtml("10/5"));

среда, 25 декабря 2019 г.

Выбор цветов для “ночной” темы

#android #gui #ui #color #material_design


Пишу погодное приложение. 

Для подбора цветов, чтобы следовать концепции Material Design, использовал ресурс
https://www.materialpalette.com/. 

Остановился на следующей цветовой схеме (см. рисунок ниже)

Сейчас решил добавить "ночную тему" (см рисунок ЕЩЕ ниже :-)

Я брал цвета "на глаз". 

Существуют какие-либо гайды или ресурсы для подбора цветов для ночных тем? Как правильно
подобрать цвета для ночной темы, следуя концепции Material Design?

Заранее спасибо




    


Ответы

Ответ 1



Нашел любопытную статейку по первому вопросу. Находим картинку в спокойных темных тонах Загружаем в pictaculous Profit

воскресенье, 22 декабря 2019 г.

Изменить цвет .png иконки белого цвета на любой другой цвет через css

#html #css #изображения #color #png


Здравствуйте. Возможно изменить цвет .png иконки белого цвета, на любой другой цвет
(к примеру, желтый) используя css? 

Рассматривал решения, где вырезают иконку и подсвечивают фоном. Но это очень странное
решение для типовой задачи. Обычно такой параметр называется tintColor, но в css не
нашел подобного.

Пример картинки: https://i.stack.imgur.com/1B0hl.png
    


Ответы

Ответ 1



Проще начинать с уже цветного изображения, но можно и с бесцветного. В этом случае нужно сначала задать базовый оттенок фильтром сепия. .make-blue { filter: hue-rotate(180deg) brightness(0.5) saturate(600%); } .make-yellow-with-sepia { filter: contrast(50%) sepia(100%) hue-rotate(5deg) brightness(0.8) saturate(500%); } Директиву может потребоваться продублировать с префиксом -webkit-.

Ответ 2



Спасибо sanmai за подсказку. Чтобы перекрасить картинку в любой другой цвет, воспользовался следующей схемой: Перевел rgb в hsl (использовал скрипт http://code.stephenmorley.org/javascript/colour-handling-and-processing/) Подставил значения в формулу hue-rotate = h - 38; saturate = 100 + (24.5 - s); brightness = 100 + (l - 60.0); Прописал в css filter: brightness(50%) sepia(1) hue-rotate(hue-rotate) saturate(saturate%) brightness(brightness%);

воскресенье, 1 декабря 2019 г.

Как сверстать круг, разделенный на цвета

#html #css #svg #color


Нужен наиболее верный способ. Можно для примера разделить круг на 3 сегмента.


    


Ответы

Ответ 1



Вот такая функция, рисующая сектора на SVG: var drSegment = function (style, ange1, ange2) { var dir = "0"; if (angle2 - angle1 > 0.5 ) dir = "1"; var angle1 = Math.PI * 2 * ange1; var angle2 = Math.PI * 2 * ange2; var rad=300, cx=350, cy=350; var dx1 = Math.sin(angle1) * rad + cx; var dy1 = -Math.cos(angle1) * rad + cy; var dx2 = Math.sin(angle2) * rad + cx; var dy2 = -Math.cos(angle2) * rad + cy; var el= document.createElementNS( 'http://www.w3.org/2000/svg', 'path'); el.setAttribute('style', style); el.setAttribute('d', ' M '+dx1+','+dy1+' A '+rad+','+rad+' 0 ' + dir + ' 1 ' + dx2 + ',' + dy2 + ' L '+cx+','+cy+' Z'); document.getElementById('s').appendChild(el); } drSegment('fill:red; stroke:black; stroke-width:3;', -1/6, 1/6) drSegment('fill:yellow; stroke:black; stroke-width:3;', 1/6, 3/6) drSegment('fill:blue; stroke:black; stroke-width:3;', 3/6, 5/6)

Ответ 2



Делаем круглый треугольник из подрезанного полукруга, потом вращаем эти треугольники, чтобы получился круг: section { width: 10em; height: 5em; outline: 1px dotted red; margin: 1em; float: left; } .circle { height: 100%; width: 100%; background: silver; border-radius: 50% 50% 0 0 / 100% 100% 0 0; transform-origin: center bottom; } .triangle { height: 100%; width: 100%; transform-origin: center bottom; overflow: hidden; } .triangle .circle { transform: rotate(120deg); } .chart { position: relative; height: auto; overflow: hidden; /* .triangle выходят за пределы */ } .chart:before { content: ""; display: block; padding-top: 100%; } .chart .triangle { position: absolute; left: 0; top: 0; right: 0; bottom: 50%; height: 50%; }
Ну и окончательный код: section { width: 12em; margin: auto; } .chart { position: relative; overflow: hidden; /* .triangle выходят за пределы */ } .chart:before { content: ""; display: block; padding-top: 100%; } .triangle { position: absolute; left: 0; top: 0; right: 0; bottom: 50%; transform-origin: center bottom; overflow: hidden; } .circle { height: 100%; width: 100%; background: silver; border-radius: 50% 50% 0 0 / 100% 100% 0 0; transform-origin: center bottom; transform: rotate(120deg); }


Ответ 3



Делаем градиентами три одноцветных полукруга (как предложил @nueq). Поворачиваем их по трём направлениям. Добавляем background-blend-mode: multiply; (не работает в IE и Edge). Получаем шесть разноцветных секторов. Трудность в том, чтобы подобрать правильные ингредиенты ;) У меня получилось без оранжевого сектора. https://codepen.io/glebkema/pen/PjPPjJ .colors { background: linear-gradient( 0deg, #f0f 50%, transparent 50% ), linear-gradient( 120deg, #ff0 50%, transparent 50% ), linear-gradient( -120deg, #0ff 50%, transparent 50% ); background-blend-mode: multiply; border-radius: 50%; margin: 0 auto; width: 300px; height: 300px; }


Ответ 4



Если на 2 - можно градиентом: .gradient-circle{ width: 100px; height: 100px; border-radius: 50%; background: linear-gradient(to left, #aebcbf 0%,#6e7774 50%,#0a0e0a 51%,#0a0809 100%); }
Если больше сегментов - SVG (тут рисовать самому) либо Canvas (пример библиотеки - http://canvasjs.com/html5-javascript-pie-chart/)

суббота, 30 ноября 2019 г.

Могу ли я сделать вывод программы на Python цветным?

#python #color #windows


Хочу например чтоб строки вида, а точнее их вывод в консоль:
print 'Hello World'

Были зеленого цвета. Это возможно? Подскажите как?    


Ответы

Ответ 1



Используются ANSCII escape symbols, некоторые из них отвечают за цвета. В большинстве терминалов Linux они поддерживаются. Можно просто погуглить на эту тему и не обязательно скачивать colorama, хотя, наверняка, это упростит работу. Просто проверьте и всё. import sys import time import random string = "123456789\n" def color(text): sys.stdout.write(u"\x1B[{0}m{1}\x1B[0m".format (random.choice(range(31,36)+ range(90,97)),i)) sys.stdout.flush() time.sleep(random.random()/6) for i in string: color(i)

Ответ 2



colorama Cross-platform colored terminal text.

Ответ 3



https://pypi.python.org/pypi/termcolor попробуй библиотеку;)И в использовании легче from termcolor import colored print(colored('Hello World!', 'green')

Ответ 4



Чтобы не вводить руками ANSI коды для цветов и смены текущей позиции, blessings пакет может быть использован: from blessings import Terminal # $ pip install blessings import colorama # $ pip install colorama colorama.init() # replace ANSI escapes with Win32 calls in stdout/stderr t = Terminal() with t.location(0, t.height - 1): # at the bottom of the terminal print(t.green('Hello World')) colorama, предложенная @Ilya Pirogov, позволяет одному и тому же коду работать как на Linux, OS X, других Unices так и Windows.

четверг, 28 ноября 2019 г.

Возможно ли с помощью css+html сделать двух-цветные буквы шрифта?

#html #css #шрифты #color


Необходимо сделать на странице двух- (а, возможно, потом и трёх-) цветные буквы,
по такому принципу:



Букв будет много и разных цветов, не хочется использовать изображения.
Пожалуйста, подскажите, возможно ли это сделать средствами CSS и HTML (ну ещё может
JavaScript как-то помочь, если первых недостаточно)?
    


Ответы

Ответ 1



Еще как вариант h1 { font-size: 72px; width: 50px; color: blue; position: relative; display: inline-block; vertical-align: top; } h1:before, h1:after{ content: 'A'; position: absolute; top: 0; left: 0; color: red; width: 50%; overflow: hidden; } .gradient-3:before, .gradient-3:after{ width: 33.333%; } .gradient-3:after{ left: 50%; color: green; transform: translateX(-50%); text-align: center; text-indent: -33.333%; } /* hack for ff */ @-moz-document url-prefix() { .gradient-3:after { text-indent: -100%; } }

A

A



Ответ 2



Так? h1 { font-size: 72px; width: 50px; background: -webkit-linear-gradient(left, red 49%, blue 50%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }

A

UPD: Добавил вертикальное деление. Не самое идеальное решение, может кто-то предложит и получше. UPD2: Оставлю и горизонтальный вариант, мало ли кому пригодится. h1 { font-size: 72px; background: -webkit-linear-gradient(red 49%, blue 50%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }

A

UPD3: Код для 3 цветов h1 { font-size: 72px; width: 50px; background: -webkit-linear-gradient(left, red 30%, green 30%, green 60%, blue 60%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }

A



Ответ 3



Для кроссбразурной работы и без возни с абсолютно позиционированными элементами используйте SVG: A Тут в принципе несложно, просто игра с отступами градиентов.

Ответ 4



С псевдоэлементами, и дублированием текста в атрибут можно реализовать и не только для отдельных букв. Суть метода в том, чтобы клонировать текст в псевдоэлементы через content: attr(data-text), сам текст сделать прозрачным и отобразить только текст из :before и :after. А дальше остается только разнести их в разные части блока и выставить отрицательный z-index, чтобы текст можно было нормально выделить. p[data-text] { position: relative; font-size: 45px; color: transparent; font-weight: bold; } p[data-text]:before, p[data-text]:after { position: absolute; content: attr(data-text); left: 0; bottom: 0; color: #000; height: 50%; overflow: hidden; z-index: -1; } p[data-text]:before { line-height: 0; } p[data-text]:after { top: 0; color: red; }

Doublecolor text



среда, 10 июля 2019 г.

В чём премущество HEX-формата цвета в HTML перед RGB(A)? [закрыт]

Каков выигрыш от использования цвета в шетнадцатиричном (HEX) формате HTML?
Этот формат гораздо труднее для восприятия, чем RGB, да и канала прозрачности нет. Казалось бы, при таком раскладе можно и полностью отказаться он HEX в пользу RGBA, но HEX не только активно используется, но и имеет большую популярность.
Остаётся сделать вывод, что использование цвета в этом формате является приоритетным с точки зрения оптимизации. Верно ли это предположение?


Ответ

Это почти одно и то же. Просто HEX использует представление в шестнадцатеричной системе счисления (#RRGGBB или #RGB), а rgb в десятичной, что более удобно для человеческого восприятия. Еще в rgb можно указывать значения в процентах rgb(100%,0%,0%) и указывать прозрачность rgba(255,255,255,0.5)

понедельник, 3 июня 2019 г.

Как изменить цвет для svg?

Я не знаю как менять цвет с помощью css для изображения в формате svg.
Источник (изображения): http://www.flaticon.com/free-icon/home-web-page_12168#term=home&page=1&position=27
Пробовал так:
svg {fill: #008000;}
Не получилось почему-то.


Ответ

Все зависит от того как вы его вставляете на страницу, а вообще если по-простому через src=svg.svg, то можно так:

вторник, 7 мая 2019 г.

Binding color to constants class

Не могу прибиндить цветовую константу, которая находится в другой dll-ке.
"/>
Студия ругается на плохой код и не хочет ничего делать. И принимает только объект, а стринг не хочет. Как я понял, нужен конвертер.
Есть ли стандартный, или самому писать? (если можно, пример).


Ответ

Ссылки на статические свойства нужно давать не через Binding, а через x:Static

При этом у вас, разумеется, должно быть правильно объявлено пространство имён constants, что-то вроде
xmlns:constants="clr-namespace:Namespace.In.Assembly;assembly=Your.Assembly.Name"
Не забудьте убедиться, что ваша сборка с константами называется Your.Assembly.Name, в ней в пространстве имён Namespace.In.Assembly находится public-класс ColorConstants, у которого есть статическое свойство (а не поле!) Black, у которого хотя бы getter объявлен как public

Для случая, когда ваш x:Static обладает неправильным типом (у вас строка, а ожидается Color), вам нужно применить конвертер. Самый простой синтаксически способ — написать свой MarkupExtension в замену x:Static, который заодно конвертировал бы значение в нужный тип стандартным конвертером.
Итак:
public class SmartStaticExtension : StaticExtension { public SmartStaticExtension(string member) : base(member) { }
public override object ProvideValue(IServiceProvider serviceProvider) { // получим значение стандартного x:Static object value = base.ProvideValue(serviceProvider);
// попытаемся вычислить тип, к которому надо привести IProvideValueTarget target = serviceProvider.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget; if (target != null) { Type targetType = typeof(object); // если целевое свойство - DependencyProperty DependencyProperty dp = target.TargetProperty as DependencyProperty; if (dp != null) { targetType = dp.PropertyType; // берём тип у него } else { // целевое свойство - обыкновенное свойство, используем рефлексию PropertyInfo pi = target.TargetProperty as PropertyInfo; if (pi != null) targetType = pi.PropertyType; }
// получаем стандартный конвертер: TypeConverter converter = TypeDescriptor.GetConverter(targetType); // и конвертируем value = converter.ConvertFrom(value); }
return value; } }
Имея такой конвертер, можно написать

(разумеется, пространство имён local должно указывать туда, где определён SmartStaticExtension).
Работает как со строками ("LightCyan") так и с RGB-константами ("#708090").

пятница, 5 апреля 2019 г.

Как в TextView установить разный цвет для каждого символа

Есть к примеру текст "10/5" и как в TextView сделать чтоб к примеру число 10 было зеленым цветом, слэш серым, а число 5 красным


Ответ

Можно избежать использования HTML при помощи такого способа:
TextView TV = (TextView)findViewById(R.id.mytextview01); Spannable word = new SpannableString("Your message");
word.setSpan(new ForegroundColorSpan(Color.BLUE), 0, word.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
TV.setText(word); Spannable wordTwo = new SpannableString("Your new message");
wordTwo.setSpan(new ForegroundColorSpan(Color.RED), 0, wordTwo.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); TV.append(wordTwo);