如何设置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)的主要内容,如果未能解决你的问题,请参考以下文章

Paint API

自定义控件详解:Paint 画笔路径效果

android drawArc使用

android drawArc使用

android中自定义view涉及到的绘制知识

首页2--动态自定义圆形进度条