进度条上的小圆点怎么做_带文字跟随和小圆点的进度条

项目遇到顺手写了个。顺便放这了当个纪念品吧

图中圈中的即是辣个条

/**

* 项目名称:AutoSignIn

* 创建者: 郑伟

* 创建时间:2018/5/2 下午2:50

* 功能简介:带文字跟随的进度条 很帅的那种 哈哈哈哈

*/

public class CustomProgressView extends View {

private PaintmPaint =new Paint();// 创建一个画笔

private int progress;//进度

private int leftX;//左边开始的位置

private int rightX;//右边结束的位置

private int topY;//上边的间隙

private LinearGradientlg;//渐变色着色器

private StringtextStr;//跟随的文字

private Handlerhandler;

public CustomProgressView(Context context) {

super(context);

init();

}

public CustomProgressView(Context context, @Nullable AttributeSet attrs) {

super(context, attrs);

init();

}

public CustomProgressView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

init();

}

private void init() {

progress =60;

leftX =0;

topY =50;

lg =new LinearGradient(leftX, topY, rightX -10, topY, 0xffFF9C3A, 0xffF54656,

Shader.TileMode.MIRROR);

handler =new Handler();

textStr ="热卖中";

}

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

rightX = getWidth();

mPaint.setAntiAlias(true);//消除锯齿

//画第一条线

mPaint.setColor(0x11E88FA0); //设置画笔颜色

mPaint.setStyle(Paint.Style.FILL); //设置画笔模式为填充

mPaint.setStrokeWidth(5f); //设置画笔宽度为10px

canvas.drawLine(leftX, topY, rightX, topY, mPaint);

//画第二条线

rightX =rightX /100 *progress;

if (progress ==100)rightX = getWidth();

mPaint.setAlpha(255);

mPaint.setShader(lg);

canvas.drawLine(leftX, topY, rightX -10, topY, mPaint);

//画圆点

mPaint.setColor(0xffF54656);

mPaint.setStyle(Paint.Style.STROKE);//描边

mPaint.setStrokeWidth(3f);

if (rightX!=0){

canvas.drawCircle(rightX, topY, 8, mPaint);}else {

canvas.drawCircle(10, topY, 8, mPaint);

}

//画文字

mPaint.setStyle(Paint.Style.FILL);

mPaint.setTextSize(25f);

if (rightX -25 <=25)rightX =25;

if (rightX >= getWidth())rightX = getWidth() -50;

canvas.drawText(textStr, rightX -25, topY +50, mPaint);

}

/**

* 设置进度百分比

*

* @param num 0-100

*/

public void setProgress(int num) {

if (num >=100) {

num =100;

}else if (num <=0) {

num =0;

}

final int finalNum = num;

new Thread(new Runnable() {

@Override

public void run() {

for (int i =0; i <=finalNum; i++) {

progress = i;

try {

Thread.sleep(10);

handler.post(new Runnable() {

@Override

public void run() {

invalidate();

}

});

}catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}).start();

}

/**

* 设置跟随的文字内容

* @param str

*/

public void setTextStr(String str){

textStr = str;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值