如何设置paint.setColor(R.color.white)

Vas*_*hev 21 android canvas paint

我有一个使用Paint和Canvas绘制对象的自定义View.我的问题是如何设置:

int color = R.color.white;
paint.setColor(color);
Run Code Online (Sandbox Code Playgroud)

来自我的/res/valuse/color.xml,其中包括像

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="white">#FFFFFF</color>
    <color name="black">#000000</color>
    ...
</resources>
Run Code Online (Sandbox Code Playgroud)

Vit*_*ski 54

int color = ContextCompat.getColor(context, R.color.white);
paint.setColor(color);
Run Code Online (Sandbox Code Playgroud)

setColor()方法将颜色编号作为int值,但不是资源ID int.

  • [资源文档](http://developer.android.com/reference/android/content/res/Resources.html#getColor(int))说_这个方法在API级别23_中已弃用,请参阅[answer](http: //stackoverflow.com/a/31590927/4281182). (3认同)
  • @SelçukCihan,我根据你的评论编辑了这个答案. (2认同)

小智 11

尝试使用color.white:

paint.setColor(Color.white)
Run Code Online (Sandbox Code Playgroud)

  • 嗯......看起来这不回答问题(至少不是我理解它:-) - 这是关于如何访问资源中声明的自定义颜色(相对于预定义的颜色) (2认同)

Vas*_*hev 9

首先从xml文件中获取颜色

int color = context.getResources().getColor(R.color.colorPrimary); // old
Run Code Online (Sandbox Code Playgroud)

现在已弃用,请改用此名称

int color = ContextCompat.getColor(context, R.color.colorPrimary); // new
Run Code Online (Sandbox Code Playgroud)

设置颜色

paint.setColor(color);
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)