一耍属、xml定義style的方法
創(chuàng)建attrs.xml
<declare-styleable name="rainbowbar">
<attr name="rainbowbar_hspace" format="dimension"></attr>
<attr name="rainbowbar_vspace" format="dimension"></attr>
<attr name="rainbowbar_color" format="color"></attr>
</declare-styleable>
繼承View類,并重寫構(gòu)造方法
public class LoadingLine extends View {
public LoadingLine(Context context) {
super(context);
}
public LoadingLine(Context context, AttributeSet attrs) {
this(context, attrs,0);
}
public LoadingLine(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
TypedArray t = context.obtainStyledAttributes(attrs,
R.styleable.rainbowbar, 0, 0);
int hSpace = t.getDimensionPixelSize(R.styleable.rainbowbar_rainbowbar_hspace, 100);
int vSpace = t.getDimensionPixelOffset(R.styleable.rainbowbar_rainbowbar_vspace, 100);
int barColor = t.getColor(R.styleable.rainbowbar_rainbowbar_color, Color.GREEN);
t.recycle(); // we should always recycle after used
}
}
二呢撞、代碼定義style屬性
public class BannerAd extends View {
public BannerAd(Context context, String id) {
super(context);
}
public BannerAd(Context context, AttributeSet attrs) {
super(context, attrs);
String namespace = "http://schemas.android.com/apk/lib/com.kok.kok";
String adSize = attrs.getAttributeValue(namespace, "adSize");
String adAnimType = attrs.getAttributeValue(namespace, "adAnimType");
String adUnitId = attrs.getAttributeValue(namespace, "adUnitId");
}
}
使用方式:
由于沒有在style樣式中聲明屬性溪厘,所以使用控件時需要把自定的命名空間和屬性需要手動寫上。適用于sdk開發(fā)合搅。