好看的自定义progressbar 下方加进度数字

今天UI给了张进度条的图片 

这个样子  网上肯定没有相同了的 所以自己画的 

思路很简单 因为我这个不需要拖动 只要展示就可以 所以就是画的圆和线条加载一起 在下方显示进度 

package cn.dlc.Baimi.view;


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;

public class DrawView  extends View {

    public DrawView(Context context) {
        super(context);
    }

    public DrawView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public int QISHI_X = 30;//
    public int QISHI_Y = 30;//Y同意
    public int DIAN_SIZE = 10;
    public int QISHI_XIAN_SX = 30;
    public int QISHI_XIAN_PX = 30;
    public int ZHONG_QIU_X = 30;

    public int TEXT_SIZE = 30;
    public int HOU_XIAN_SX = 30;
    public int HOU_XIAN_PX = 30;
    public int HOU_QIU_X = 30;
    public int XIAN = 100;
    public int YIYOU = 50;

    public void setYIYOU(int YIYOU) {
        this.YIYOU = YIYOU;
        invalidate();
    }

    public void iniview(int context){
    YIYOU=context;
    invalidate();
}
    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        /*
         * 方法 说明 drawRect 绘制矩形 drawCircle 绘制圆形 drawOval 绘制椭圆 drawPath 绘制任意多边形
         * drawLine 绘制直线 drawPoin 绘制点
         */
        int weth = getWidth();
        int XIANCHANG =(weth-(DIAN_SIZE*3))*100;//线的长度
        int JIAZAI_CHANG = XIANCHANG/100*YIYOU/100;//第一条线的长度等于总长减去三个球的大小 分线的长度%
        int shengyu_chang = XIANCHANG/100 - JIAZAI_CHANG;
        int y = DIAN_SIZE; //线的y 等于求的一半-5
        int one_xian = QISHI_X + DIAN_SIZE;//其实的x轴加求的大小
        Log.e("TAG","第一"+JIAZAI_CHANG+"第二"+shengyu_chang+"总长"+weth);
        //  int one_xian_end = QISHI_X + DIAN_SIZE + XIAN;

        //设置画笔
        Paint paint = new Paint();
        paint.setColor(Color.parseColor("#FF9DB7"));
        paint.setStrokeWidth(6);

        canvas.drawCircle(QISHI_X, y, DIAN_SIZE, paint);
        paint.setStrokeWidth((float) 2.0);
        paint.setColor(Color.parseColor("#FF9DB7"));
        canvas.drawLine(one_xian, y, JIAZAI_CHANG, y, paint);


        paint.setColor(Color.parseColor("#FF9DB7"));
        paint.setStrokeWidth(6);
        int tow_qiu = JIAZAI_CHANG+DIAN_SIZE;//第二个球的x 是第一条线的长度加求的大小
        canvas.drawCircle(tow_qiu, y, DIAN_SIZE, paint);//第二个球
        paint.setColor(Color.parseColor("#FF9DB7"));

        paint.setTextSize(30);
        canvas.drawText("0", QISHI_X, y+33, paint);

        paint.setTextSize(30);
        canvas.drawText(YIYOU+"%", tow_qiu-30, y+33, paint);



        paint.setStrokeWidth((float) 2.0);
        paint.setColor(Color.parseColor("#E5E5E5"));
        int two_xian = tow_qiu+DIAN_SIZE;
        canvas.drawLine(two_xian, y, two_xian+shengyu_chang, y, paint);
        paint.setColor(Color.parseColor("#E5E5E5"));
        paint.setStrokeWidth(6);
        canvas.drawCircle(two_xian+shengyu_chang , y, DIAN_SIZE, paint);
        paint.setTextSize(30);
        if(YIYOU!=100){
            canvas.drawText("100%", weth-75, y+33, paint);
        }

    }
}

写的比较糙 复制过去就能用 

xml里面自己写吧 只要告诉别小于他就行 


有什么问题下方留言我 

猜你喜欢

转载自blog.csdn.net/qq_34468274/article/details/80942304