有人见过这样的东西吗?
我用下面的代码在画布上画一些矩形。
int col = pad.getColor();
paint.setColor(col);
Log.d("XXX","col " + Color.red(col) + "," + Color.green(col) + "," + Color.blue(col) + " " + Color.alpha(col) );
canvas.drawRoundRect(pad.getFloatRect(), 20, 20, paint);
在某些情况下,这完全按照预期工作。我将矩形涂上我存储在pad对象中的颜色。
但在其他情况下,矩形的颜色是错误的。
例如,我有一个便签本,它的颜色是白色。颜色来自colors.xml,它是用
指定的。<color name="pad3">#FFFFFF</color>
当我对col的红、绿、蓝分量进行对数时,我得到了255、255、255。
但是实际的矩形被涂成了深灰色而不是白色。
我完全被这个迷惑了。
我能想到的只有两种可能:
a)在Android中有一些设置(主题或样式)以某种方式用替代替代某些颜色。即使颜色是明确设置的。这可能吗?如果是这样,我不是故意这样做的,但我使用的是一个由Android Studio创建的项目,它创建了很多样板文件,我应该在哪里寻找这些设置来停止它?
b)我注意到较深的颜色可以出来,而最浅的颜色有这个问题。我想知道这是否是因为当尝试将Android颜色存储在int中时会丢失一些高端位。虽然白色的红色、绿色和蓝色成分都是255,这一事实表明情况并非如此。
我也认为它与alpha通道有关,但在所有情况下都是255。
所以我完全被难住了。有些颜色很好。别人不是。我看不出有和没有的有什么区别。
OK
我用这个帮助解决了我的问题:https://stackoverflow.com/a/67399219/8482
我想基本上就是加上这行
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
到我的主题,解决了这个问题。它关闭了一些强制的自动暗模式。
以前看起来深色是正常渲染的,但浅色是自动变暗的。现在颜色又恢复正常了。
提醒一下。这太疯狂了!为什么像这样的东西是默认的,你必须选择退出,而不是你明确选择加入?