1. 程式人生 > >自定義屬性設定顏色

自定義屬性設定顏色

首先我們需要建立一個資料夾,在res下的values下面建立attr
attr.xml裡面的內容及介紹

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

    <!--宣告-設定樣式:表示一個屬性組它的名字必須和你自定義檢視的名字相同-->
    <declare-styleable name="Lunpan">
        <!--attr:表示單獨的一個屬性.format代表屬性的格式格式包括很多種:比如顏色,數值,列舉等。-->
        <attr name="title_color" format="color"></attr>
        <attr name="title_color2" format="color"></attr>
        <attr name="title_color3" format="color"></attr>
        <attr name="title_color4" format="color"></attr>
        <attr name="title_color5" format="color"></attr>
        <attr name="title_color6" format="color"></attr>
    </declare-styleable>
</resources>

回到需要寫顏色的地方用自己的屬性寫顏色
在這裡插入圖片描述
我是使用自定義控制元件的時候使用的所以我在初始化操作的時候定義使用
color的型別是int

//用於自定義樣式,
        mTypedArray = context.obtainStyledAttributes(attrs, R.styleable.Lunpan);
        color = mTypedArray.getColor(R.styleable.Lunpan_title_color, 0);
        color2 = mTypedArray.getColor(R.styleable.Lunpan_title_color2, 0);
        color3 = mTypedArray.getColor(R.styleable.Lunpan_title_color3, 0);
        color4 = mTypedArray.getColor(R.styleable.Lunpan_title_color4, 0);
        color5 = mTypedArray.getColor(R.styleable.Lunpan_title_color5, 0);
        color6 = mTypedArray.getColor(R.styleable.Lunpan_title_color6, 0);

接下來判斷使用,繪製6個弧度

if(color != -1){
            mPaint.setColor(color);
            canvas.drawArc(rectF,start * 0,start,true,mPaint);
        }
        if(color2 != -1){
            mPaint.setColor(color2);
            canvas.drawArc(rectF,start * 1,start,true,mPaint);
        }
        if(color3 != -1){
            mPaint.setColor(color3);
            canvas.drawArc(rectF,start * 2,start,true,mPaint);
        }
        if(color4 != -1){
            mPaint.setColor(color4);
            canvas.drawArc(rectF,start * 3,start,true,mPaint);
        }
        if(color5 != -1){
            mPaint.setColor(color5);
            canvas.drawArc(rectF,start * 4,start,true,mPaint);
        }
        if(color6 != -1){
            mPaint.setColor(color6);
            canvas.drawArc(rectF,start * 5,start,true,mPaint);
        }

效果
在這裡插入圖片描述