Android перекрашивает прямоугольник в белый цвет
Я пытаюсь создать собственный вид, который читает цвет из моего Arduino через Bluetooth и отображает этот цвет на экране моего телефона. Я в состоянии успешно прочитать цвет с устройства Bluetooth через поток, который я создал, чтобы непрерывно читать данные из Arduino. У меня также есть другой поток, работающий в цикле, чтобы увидеть, изменился ли этот цвет и, если он имеет, изменить глобальную переменную selectedColor соответственно:
while(true){
int newColor = device.activeSensorColor;
if(chosenColor != newColor){
chosenColor = newColor;
invalidater.post(invalidating);
}
}
После этого он использует Обработчик в потоке пользовательского интерфейса для вызова invalidate(); и перерисовать форму. Следующая пустота всегда называется:
@Override
protected void onDraw(Canvas canvas){
super.onDraw(canvas);
canvas.drawRect(bounds, boxPaint);
samplePaint.setColor(chosenColor);
canvas.drawRect(colorSample, samplePaint);
canvas.drawText(buttonText, (width - height) / 2 + height, height / 2, textPaint);
canvas.drawRect(sampleBorder, borderPaint);
}
И это непременно установит цвет коробки на белый. Я пытался разобраться в этом часами, но каждый раз, когда я что-то пробую, цвет прямоугольника образца будет белым, независимо от того, какой цвет берется из Arduino. У кого-нибудь есть идеи? Благодарю.
1 ответ
Я понял это! Я не могу поверить, что я был так глуп! После считывания цвета из моего arduino я сохранял его в целое число, используя Color.argb(a,r,g,b); метод. Устройство не посылало мне альфа-значение, поэтому оно было нулевым, а цвет, который я создавал, стал прозрачным. Сейчас я использую метод Color.rgb(r,g,b), и это прекрасно работает:)