2

我的 String.xml 文件中有颜色,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<resources>


      <string name="txtEmail">Email </string>
       <string name="txtPin">Pin Code</string>
       <string name="lblProtected"> Protected</string>

       <color name="MiscellaneousPercent">#ffff992b</color>
       <color name="MusicPercent">#ffffdd58</color>
       <color name="PicturesPercent">#ff48aa71</color>
       <color name="eBooksPercent">#ff00cff9</color>
       <color name="DocumentsPercent">#ff019df2</color>
</resources>

我想在我的项目中使用这些颜色,以便通过代码迭代颜色。

    public class BreakDownBar extends View {

        public BreakDownBar(Context context, AttributeSet attrs) {
            super(context, attrs);
        }


            @Override
            protected void onDraw(Canvas canvas) {

                     for (int i = 0; i < 5; i++) {
            Paint paint = new Paint();
                        paint.setColor(/*I want to use the colors HERE*/); 
            }


                }
}

如何使用上述onDraw方法中的颜色SetColor()?我可以将 String.XML 文件中的颜色放在一个数组中吗?谁能帮我?

4

3 回答 3

4

像这样使用

context.getResources().getColor(R.color.MusicPercent);
于 2012-05-14T10:06:45.640 回答
3

您必须利用您的上下文,并以数组格式提供您的资源并使用它。

public class BreakDownBar extends View {

    Context context=null;
int res[]={R.color.black,R.color.blue,R.color.white,R.color.pink,R.color.grey};

        public BreakDownBar(Context context, AttributeSet attrs) {
            super(context, attrs);
            this.context=context;
        }


            @Override
            protected void onDraw(Canvas canvas) {

                     for (int i = 0; i < 5; i++) {
                       Paint paint = new Paint();
                       paint.setColor(res[i]));
            }


                }
}
于 2012-05-14T10:06:31.960 回答
1

//你可以通过获取资源来使用

paint.setColor(context.getResources().getColor(R.color.custom_red)); 
于 2012-05-14T10:08:44.937 回答