如何设置paint.setColor(R.color.white)
Posted
技术标签:
【中文标题】如何设置paint.setColor(R.color.white)【英文标题】:How to set paint.setColor(R.color.white) 【发布时间】:2012-10-15 15:57:19 【问题描述】:我有一个自定义视图,它使用 Paint 和 Canvas 来绘制对象。我的问题是如何设置:
int color = R.color.white;
paint.setColor(color);
来自我的 /res/valuse/color.xml,其中包括类似的资源
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="white">#FFFFFF</color>
<color name="black">#000000</color>
...
</resources>
【问题讨论】:
【参考方案1】:int color = ContextCompat.getColor(context, R.color.white);
paint.setColor(color);
setColor()
方法将颜色编号作为 int
值,但不是资源 ID,它也是 int
。
【讨论】:
Resources documentation 说 此方法在 API 级别 23 中已弃用,请参阅此answer。 同意,这是一个重要的通知。 @SelçukCihan,我根据您的评论编辑了这个答案。【参考方案2】:首先从 xml 文件中获取你的颜色
int color = context.getResources().getColor(R.color.colorPrimary); // old
现在已弃用,请改用它
int color = ContextCompat.getColor(context, R.color.colorPrimary); // new
设置颜色
paint.setColor(color);
xml文件预览:res/values/color.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
</resources>
【讨论】:
谢谢!节省了我在网上搜索处理 API 兼容性问题的时间。【参考方案3】:尝试使用color.white
:
paint.setColor(Color.white)
【讨论】:
hmm ... 看起来这并不能回答问题(至少不是我如何理解它:-) - 这是关于如何访问资源中声明的自定义颜色(与预定义颜色) 这并没有回答问题,即获取从 resources 预定义的颜色的 int 值,以便与 paint.setColor(...) 一起使用。它应该是 Color.WHITE(全部大写),而不是 Color.white。完全没用。【参考方案4】:paint.setColor(Color.parseColor("#FFFFFF"))
【讨论】:
【参考方案5】:设置任意颜色
paint.setColor( Color.rgb(R, G, B) )
【讨论】:
以上是关于如何设置paint.setColor(R.color.white)的主要内容,如果未能解决你的问题,请参考以下文章