【发布时间】:2013-11-29 09:14:58
【问题描述】:
我正在尝试创建一个自定义视图,该视图通过蓝牙从我的 arduino 读取颜色并在我的手机屏幕上显示该颜色。我能够通过我创建的线程成功地从蓝牙设备读取颜色,以不断从 arduino 读取数据。我还有另一个线程在循环中运行,以查看该颜色是否已更改,如果已更改,则相应地更改全局变量 selectedColor:
while(true){
int newColor = device.activeSensorColor;
if(chosenColor != newColor){
chosenColor = newColor;
invalidater.post(invalidating);
}
}
完成此操作后,它使用 UI 线程上的 Handler 调用 invalidate();并重绘表格。始终调用以下 void:
@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 拾取什么颜色。有没有人有任何想法?谢谢。
【问题讨论】: