Android : Draw Circle With Text Inside

前端 未结 5 731
闹比i
闹比i 2020-12-01 12:29

I need to draw three circles in my fragment ,the circles differ in size, I refer this link The result i obtained is this

5条回答
  •  無奈伤痛
    2020-12-01 12:45

    Try this

    import android.content.Context;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.util.AttributeSet;
    import android.widget.TextView;
    
    public class CircularTextView extends TextView
    {
    private float strokeWidth;
    int strokeColor,solidColor;
    
    public CircularTextView(Context context) {
        super(context);
    }
    
    public CircularTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    
    public CircularTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    
    
    @Override
    public void draw(Canvas canvas) {
    
        Paint circlePaint = new Paint();
        circlePaint.setColor(solidColor);
        circlePaint.setFlags(Paint.ANTI_ALIAS_FLAG);
    
        Paint strokePaint = new Paint();
        strokePaint.setColor(strokeColor);
        strokePaint.setFlags(Paint.ANTI_ALIAS_FLAG);
    
        int  h = this.getHeight();
        int  w = this.getWidth();
    
        int diameter = ((h > w) ? h : w);
        int radius = diameter/2;
    
        this.setHeight(diameter);
        this.setWidth(diameter);
    
        canvas.drawCircle(diameter / 2 , diameter / 2, radius, strokePaint);
    
        canvas.drawCircle(diameter / 2, diameter / 2, radius-strokeWidth, circlePaint);
    
        super.draw(canvas);
    }
    
    public void setStrokeWidth(int dp)
    {
        float scale = getContext().getResources().getDisplayMetrics().density;
        strokeWidth = dp*scale;
    
    }
    
    public void setStrokeColor(String color)
    {
        strokeColor = Color.parseColor(color);
    }
    
    public void setSolidColor(String color)
    {
        solidColor = Color.parseColor(color);
    
    }
    }
    

    https://stackoverflow.com/a/34685568/2809351

提交回复
热议问题