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

Context を利用し、リソースを配列形式で提供して使用する必要があります。

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

// get resource で使える

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