新版本角标
(63条消息) 安卓自定义角标_白云飘絮的博客-CSDN博客
在res/values下新建attrs.xml文件
<declare-styleable name="BitmapSubscriptView">
<attr name="subscript_bitmap" format="reference"/>
<attr name="subscript_orientation">
<enum name="top_right" value="0"/>
<enum name="bottom_right" value="1"/>
<enum name="bottom_center" value="2"/>
<enum name="bottom_left" value="3"/>
<enum name="top_left" value="4"/>
<enum name="top_center" value="5"/>
</attr>
<attr name="subscript_radius" format="dimension"/>
<attr name="subscript_color" format="color|reference"/>
<attr name="angular_offset_x" format="dimension"/>
<attr name="angular_offset_y" format="dimension"/>
<attr name="subscript_text" format="integer"/>
<attr name="subscript_text_color" format="color|reference"/>
</declare-styleable>
创建自定义View
public class BitmapSubscriptView extends View {
public BitmapSubscriptView(Context context) {
this(context, null);
}
public BitmapSubscriptView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public BitmapSubscriptView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.BitmapSubscriptView);
init(typedArray);
}
}
初始化
public static final int TOP_RIGHT = 0;
public static final int BOTTOM_RIGHT = 1;
public static final int BOTTOM_CENTER = 2;
public static final int BOTTOM_LEFT = 3;
public static final int TOP_LEFT = 4;
public static final int TOP_CENTER = 5;
/**
* 默认类型
*/
@IntDef({TOP_RIGHT, BOTTOM_RIGHT, BOTTOM_CENTER, BOTTOM_LEFT, TOP_LEFT,TOP_CENTER})
@Retention(RetentionPolicy.SOURCE)
private @interface SubscriptOrientation {
}
//文字画笔
private TextPaint textPaint;
/**
* 获取文字画笔
*/
public Paint getTextPaint(){
return textPaint;
}
//文字颜色
private int textColor = ContextCompat.getColor(getContext().getApplicationContext(), R.color.colorWhite);
/**
* 设置角标中文字的颜色
* @param textColor 文字颜色
*/
public void setTextColor(int textColor){
this.textColor = textColor;
textPaint.setColor(textColor);
invalidate();
}
//文字
private String subscriptText = "0";
/**
* 设置角标中的文字
* @param subscriptText 角标数字
*/
public void setSubscriptText(String subscriptText){
this.subscriptText = subscriptText;
invalidate();
}
//角标画笔
private Paint subscriptPaint;
/**
* 获取角标画笔
*/
public Paint getSubscriptPaint(){
return subscriptPaint;
}
//角标颜色
private int subscriptColor = ContextCompat.getColor(getContext().getApplicationContext(), R.color.colorAccent);
/**
* 设置角标填充颜色
* @param subscriptColor 角标颜色
*/
public void setSubscriptColor(int subscriptColor){
this.subscriptColor = subscriptColor;
subscriptPaint.setColor(subscriptColor);
invalidate();
}
//角标半径
private float subscriptRadius ;
/**
* 设置角标半径
* @param subscriptRadius 半径
*/
public void setSubscriptRadius(float subscriptRadius){
if (blankBitmap != null){
blankBitmap = null;
}
this.subscriptRadius = subscriptRadius;
invalidate();
}
//角标X轴偏移量
private float angularOffsetX = 0 ;
/**
* 设置角标X轴偏移量
* @param angularOffsetX 正数:向右;负数:向左
*/
public void setAngularOffsetX(float angularOffsetX){
this.angularOffsetX = angularOffsetX;
invalidate();
}
//角标Y轴偏移量
private float angularOffsetY = 0 ;
/**