Android重绘矩形填充白色

时间:2013-11-28 12:27:11

标签: android colors ondraw

我正在尝试创建一个自定义视图,通过蓝牙从我的arduino中读取颜色,并在我的手机屏幕上显示该颜色。我能够通过我创建的线程从蓝牙设备中成功读取颜色,以便不断从arduino中读取数据。我还在循环上运行了另一个线程来查看该颜色是否已更改,如果有,则相应地更改全局变量chosenColor:

       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中拾取什么颜色。有没有人有任何想法?感谢。

1 个答案:

答案 0 :(得分:0)

我已经明白了!我简直不敢相信我是如此愚蠢!从我的arduino读取颜色后,我使用Color.argb(a,r,g,b)将其保存为整数;方法。该设备没有向我发送一个alpha值,所以这是零,我创建的颜色变得透明。我现在正在使用Color.rgb(r,g,b)方法,这很有效:)