package com.lqr;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
/**
* @创建者 CSDN_LQR
* @描述 仿微信小视频进度条
*/
public class RecordProgress extends View {
private Paint mPaint = new Paint();
private boolean mIsStart = false;
private int mRecordTime = 10 * 1000;//默认最长录制时间是10秒
private int mProgressColor = Color.BLACK;//默认进度条是黑色
private long mStartTime;
private Context mContext;
public RecordProgress(Context context) {
super(context, null);
}
public RecordProgress(Context context, AttributeSet attrs) {
super(context, attrs, 0);
}
public RecordProgress(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
mContext = context;
init();
}
private void init() {
mPaint.setStyle(Paint.Style.FILL);
mPaint.setColor(mProgressColor);
stop();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
long currTime = System.currentTimeMillis();
if (mIsStart) {
int measureWidth = getMeasuredWidth();
float mSpeed = measureWidth / 2.0f / mRecordTime;// 速度 = 一边距离 / 总时间
float durTime = (currTime - mStartTime);//时间间隔
float dist = mSpeed * durTime;//一边在durTime行走的距离
if (dist < measureWidth / 2.0f) {//判断是否到达终点
canvas.drawRect(dist, 0.0f, measureWidth - dist, getMeasuredHeight(), mPaint);//绘制进度条
invalidate();
return;
} else {
stop();
}
}
canvas.drawRect(0.0f, 0.0f, 0.0f, getMeasuredHeight(), mPaint);
}
public void start() {
mIsStart = true;
mStartTime = System.currentTimeMillis();
invalidate();
setVisibility(VISIBLE);
}
public void stop() {
mIsStart = false;
setVisibility(INVISIBLE);
}
public int getProgressColor() {
return mProgressColor;
}
public void setProgressColor(int progressColor) {
mProgressColor = progressColor;
mPaint.setColor(mProgressColor);
}
public int getRecordTime() {
return mRecordTime;
}
public void setRecordTime(int recordTime) {
mRecordTime = recordTime * 1000;
}
}