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), и это прекрасно работает:)

Другие вопросы по тегам