【问题标题】:Android Repainting Rectangle Fills WhiteAndroid重绘矩形填充白色
【发布时间】: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 拾取什么颜色。有没有人有任何想法?谢谢。

【问题讨论】:

    标签: android colors ondraw


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2017-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-23
      • 2014-09-08
      • 2011-10-20
      相关资源
      最近更新 更多