自定义角标

新版本角标

(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 ;

    /**
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值