2013-11-28 100 views
0

我试图创建一个自定义视图,通过蓝牙从我的arduino中读取颜色,并在手机屏幕上显示该颜色。通过我创建的线程,我可以成功地从蓝牙设备读取颜色,以便不断从arduino读取数据。我也有一个环路上运行的另一个线程,看看是否颜色发生了变化,如果有,相应地改变全局变量chosenColor:Android重绘矩形填充白色

 while(true){ 
      int newColor = device.activeSensorColor; 
      if(chosenColor != newColor){ 
       chosenColor = newColor; 
       invalidater.post(invalidating); 
      } 
     } 

它已经做到了这一点之后,它使用一个处理器上的UI线程调用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中拾取什么颜色,示例矩形的颜色都是白色的。有没有人有任何想法?谢谢。

回答

0

我已经想通了!我不敢相信我是如此愚蠢!在从我的arduino中读取颜色后,我使用Color.argb(a,r,g,b)将它保存为整数。方法。该设备没有给我发送一个alpha值,所以这是零,我创建的颜色变成透明的。我现在使用Color.rgb(r,g,b)方法,这个工作很棒:)