Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
_Night_Scream_
78 / 76 / 10
Регистрация: 08.08.2013
Сообщений: 628
#1

Задать фон view 16 битным цветом

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

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

Заблюрить фон при показе View
Делаю так: rootView.setDrawingCacheEnabled(true);...

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

Программно задать цвет фона для View
Возникла проблема с установкой фона для View. Получаю цвет через класс Color...

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

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

11
vxg
Модератор
3236 / 2040 / 319
Регистрация: 13.01.2012
Сообщений: 7,898
06.09.2016, 08:28 #2
_Night_Scream_, привет. Как интерпретировать ваш тип в цвет?
0
ExFau$t
535 / 490 / 104
Регистрация: 08.05.2012
Сообщений: 2,448
06.09.2016, 10:05 #3
_Night_Scream_, я тоже не понял, попробуй использовать
Java
1
myColor = Color.argb(0, 255, 0, 255);
, последние три цифры бери граничные значения и получишь базовые цвета, если ты это имел в виду.
0
_Night_Scream_
78 / 76 / 10
Регистрация: 08.08.2013
Сообщений: 628
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
2665 / 2147 / 729
Регистрация: 12.05.2014
Сообщений: 7,500
Завершенные тесты: 1
06.09.2016, 11:36 #5
Цитата Сообщение от _Night_Scream_ Посмотреть сообщение
я хочу хранить цвет в 16 битной переменной
ну вот допустим есть метод, который будет возвращать цвет в виде 16 бит
просто интересно какого типа эта переменная в джаве?
0
_Night_Scream_
78 / 76 / 10
Регистрация: 08.08.2013
Сообщений: 628
06.09.2016, 11:39  [ТС] #6
Паблито, short не? а может char лучше, до 65535.
да хоть в 2х байтах, хоть в 16 булах, это уже не очень важно.

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

вот wiki
0
vxg
Модератор
3236 / 2040 / 319
Регистрация: 13.01.2012
Сообщений: 7,898
06.09.2016, 15:04 #7
_Night_Scream_, непонятно кто тут кому и что объясняет)
задать фон можно через setBackgroundColor. просто подайте ему то что он хочет полученное из того что у вас есть
0
_Night_Scream_
78 / 76 / 10
Регистрация: 08.08.2013
Сообщений: 628
06.09.2016, 15:15  [ТС] #8
vxg, я пытаюсь объяснить что setBackgroundColor принимает int (он 32 битный)
а у меня переменная должна быть 16 битная, тоесть значений всего 65536
Как правильно перевести из 32 в 16 битный цвет и обратно не понимаю.
0
ExFau$t
535 / 490 / 104
Регистрация: 08.05.2012
Сообщений: 2,448
06.09.2016, 15:25 #9
Цитата Сообщение от _Night_Scream_ Посмотреть сообщение
Тут надо задать 3 байта
Color.rgb(255, 0, 255);
тут надо задать числовой код цвета, от 0 до 255, красный, синий и зеленый, кол-во комбинаций этих цветов определяй сам. Я, например, когда писал приложение в стиле dark исключал все тёмные цвета, то есть выдавал красный и зелёный максимум 230, вместо 255 (утрирую, не помню точно). А как пользователь определить битность твоих цветов?
0
vxg
Модератор
3236 / 2040 / 319
Регистрация: 13.01.2012
Сообщений: 7,898
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_
78 / 76 / 10
Регистрация: 08.08.2013
Сообщений: 628
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
Модератор
3236 / 2040 / 319
Регистрация: 13.01.2012
Сообщений: 7,898
06.09.2016, 16:34 #12
Лучший ответ Сообщение было отмечено _Night_Scream_ как решение

Решение

_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
06.09.2016, 16:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2016, 16:34

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

Public void onClick(View view)
Не работает public void onClick(View view) :wall: public class MainActivity...

Фон сайта + заливка цветом
Подскажите как реализовать так скажем "двойной фон". к примеру: <body> ...


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

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

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