Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
_Night_Scream_
75 / 74 / 8
Регистрация: 08.08.2013
Сообщений: 590
#1

Задать фон view 16 битным цветом - Программирование Android

05.09.2016, 19:37. Просмотров 272. Ответов 11
Метки нет (Все метки)

Привет.
Как задать фон view переменной short?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.09.2016, 19:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Задать фон view 16 битным цветом (Программирование Android):

Задать круглые границы view - Программирование Android
Использую костыль для ripple эффекта кнопки, выглядит не очень красиво, т.к. эффект распространяется так, что чётко видны острые границы....

Программно задать цвет фона для View - Программирование Android
Возникла проблема с установкой фона для View. Получаю цвет через класс Color Код: RelativeLayout rl; @Override protected void...

Как задать прозрачный фон? - Программирование Android
Использую прогресс бар горизонтальный и хочу его кастамизировать. Ниже код: <layer-list...

В чем разница (View view) и (View v) - Программирование Android
Я только начинаю изучать программирование под андроид (до этого вобще программированием не занимался), по гуглу удалось найти только...

Public void onClick(View view) - Программирование Android
Не работает public void onClick(View view) :wall: public class MainActivity extends AppCompatActivity implements View.OnClickListener...

View вытесняет другое view из activity - Программирование Android
После второго EditText должна располагаться кнопка. Но почему-то этот второй EditText выпихивает ее из activity. Что не так?

11
vxg
Модератор
3169 / 1972 / 221
Регистрация: 13.01.2012
Сообщений: 7,575
06.09.2016, 08:28 #2
_Night_Scream_, привет. Как интерпретировать ваш тип в цвет?
0
ExFau$t
322 / 301 / 57
Регистрация: 08.05.2012
Сообщений: 1,582
06.09.2016, 10:05 #3
_Night_Scream_, я тоже не понял, попробуй использовать
Java
1
myColor = Color.argb(0, 255, 0, 255);
, последние три цифры бери граничные значения и получишь базовые цвета, если ты это имел в виду.
0
_Night_Scream_
75 / 74 / 8
Регистрация: 08.08.2013
Сообщений: 590
06.09.2016, 11:27  [ТС] #4
vxg, ExFau$t, я хочу хранить цвет в 16 битной переменной. 16 битный цвет называется HighColor (вычитал из википедии)

Тут надо задать 4 байта
Java
1
Color.argb(0, 255, 0, 255);
Тут надо задать 3 байта
Java
1
Color.rgb(255, 0, 255);
А у меня всего 2 байта.
0
Pablito
2476 / 1960 / 611
Регистрация: 12.05.2014
Сообщений: 6,864
Завершенные тесты: 1
06.09.2016, 11:36 #5
Цитата Сообщение от _Night_Scream_ Посмотреть сообщение
я хочу хранить цвет в 16 битной переменной
ну вот допустим есть метод, который будет возвращать цвет в виде 16 бит
просто интересно какого типа эта переменная в джаве?
0
_Night_Scream_
75 / 74 / 8
Регистрация: 08.08.2013
Сообщений: 590
06.09.2016, 11:39  [ТС] #6
Паблито, short не? а может char лучше, до 65535.
да хоть в 2х байтах, хоть в 16 булах, это уже не очень важно.

как из 32 получить 16 тут есть
а как обратно не знаю.

вот wiki
0
vxg
Модератор
3169 / 1972 / 221
Регистрация: 13.01.2012
Сообщений: 7,575
06.09.2016, 15:04 #7
_Night_Scream_, непонятно кто тут кому и что объясняет)
задать фон можно через setBackgroundColor. просто подайте ему то что он хочет полученное из того что у вас есть
0
_Night_Scream_
75 / 74 / 8
Регистрация: 08.08.2013
Сообщений: 590
06.09.2016, 15:15  [ТС] #8
vxg, я пытаюсь объяснить что setBackgroundColor принимает int (он 32 битный)
а у меня переменная должна быть 16 битная, тоесть значений всего 65536
Как правильно перевести из 32 в 16 битный цвет и обратно не понимаю.
0
ExFau$t
322 / 301 / 57
Регистрация: 08.05.2012
Сообщений: 1,582
06.09.2016, 15:25 #9
Цитата Сообщение от _Night_Scream_ Посмотреть сообщение
Тут надо задать 3 байта
Color.rgb(255, 0, 255);
тут надо задать числовой код цвета, от 0 до 255, красный, синий и зеленый, кол-во комбинаций этих цветов определяй сам. Я, например, когда писал приложение в стиле dark исключал все тёмные цвета, то есть выдавал красный и зелёный максимум 230, вместо 255 (утрирую, не помню точно). А как пользователь определить битность твоих цветов?
0
vxg
Модератор
3169 / 1972 / 221
Регистрация: 13.01.2012
Сообщений: 7,575
06.09.2016, 15:39 #10
_Night_Scream_, по той ссылке что вы дали весьма необычный 16-битный цвет - у него есть альфа-канал. в традиционном 16-битном цвете таких изысков нет (https://ru.wikipedia.org/wiki/%D0%93...B5%D1%82%D0%B0). поэтому уточните что же у вас за цвет
0
_Night_Scream_
75 / 74 / 8
Регистрация: 08.08.2013
Сообщений: 590
06.09.2016, 15:59  [ТС] #11
vxg, альфа канал не нужен
16-битный цвет использует 5 бит для представления красной составляющей, 5 для синей, но 6 бит (26 = 64 возможных значения) для представления зелёной, так как человеческий глаз более чувствителен к зелёной составляющей. Таким образом получаются 65 536 (32×64×32) цветов

5 красного, 5 синего и 6 зеленого, думаю так.

ExFau$t, пользователю будет дана вспомогательная библиотека, которая поможет выбрать нужный цвет, у меня не обычные пользователи.

Кому интересно расскажу для чего такие извращения.
Есть промышленный протокол modbus, там регистры размером в 16 бит (2 байта) для обмена с контроллерами.
Контроллер будет задавать цвет через один регистр modbus, такая вот задача))

Добавлено через 11 минут
Кажется въезжаю как сделать.
Есть 16 битное число.
первые 5 бит вытащить и сохранить в int red;
следующие 6 бит вытащить и сохранить в int green;
и последние 5 бит вытащить и сохранить в int blue;

Потом Color.rgb(red, green, blue);
Осталось понять как наименьшими усилиями вытащить эти биты.
0
vxg
Модератор
3169 / 1972 / 221
Регистрация: 13.01.2012
Сообщений: 7,575
06.09.2016, 16:34 #12
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
_Night_Scream_, можно так
Java
1
2
3
4
int c16 = нечто_из_контроллера;
int r = c16 & 0x1F;
int g = (c16 & 0x7E0) >> 5;
int b = (c16 & 0xF800) >> 11;
почему не short? что бы проблем не было)

Добавлено через 5 минут
Java
1
2
3
4
5
6
ByteBuffer bb = ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN);
byte[] _data = new byte[4];
//принимаем _data[0] и _data[1] - в _data[2] и _data[3] кладем нули
bb.position(0);
bb.put(_data).position(0);
int data = bb.getInt();
Добавлено через 2 минуты
...хотя мне кажется когда придут одни единицы может быть что-то не то при сдвигах из-за знаков

Добавлено через 14 секунд
...а может и нет)
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2016, 16:34
Привет! Вот еще темы с ответами:

Фон сайта + заливка цветом - HTML, CSS
Подскажите как реализовать так скажем "двойной фон". к примеру: <body> <div class="content">Контент, меню и все остальное..</div> ...

Как заменить другим цветом фон? - PascalABC.NET
Здравствуйте. Подскажите как заменить фон у проги? http://savepic.su/6649661.jpg Точнее что добавить в код что бы изменить фон. ...

Закрасить фон TextBox цветом, если он пуст - C#
Всех с праздниками! У меня два вопроса. Есть вот такой код, который работает для трёх текстбоксов. В них должны вводиться только цифры. ...

Фон каждой ячейки таблицы закрасить случайным цветом - JavaScript
Помогите, нужно чтобы каждая ячейка таблицы была закрашена случайным цветом. У меня почему-то все время все ячейки закрашиваются красным....


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

Или воспользуйтесь поиском по форуму:
12
Yandex
Объявления
06.09.2016, 16:34
Ответ Создать тему
Опции темы

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