Android自定义progressbar(雷达扫描样式进度条)
项目中需要用到类似雷达扫描的进度条,因为时间有余,所以打算自己做一个。查阅了网上很多教程和资料,最终的运行结果如下图
progressbar属性讲解
outerRoundBorderColor_init 表示外圆边框默认颜色,动图里表示浅灰色
outerRoundBorderColor_cover 表示外圆边框覆盖颜色,动图里表示浅蓝色
innerRoundBorderColor 表示内圆边框颜色,动图里表示浅蓝色
innerRoundColor 表示内圆渐变颜色,动图里表示天蓝色
roundBorderWidth 表示外圆边框宽度
progressTextSize 表示进度条字体大小
progressTextColor 表示进度条字体颜色
代码如下
代码可以直接复制使用
public class MyProgressBar extends View {
private int outerRoundBorderColor_init =Color.GRAY;
private int outerRoundBorderColor_cover = Color.BLUE;
private int innerRoundBorderColor = Color.BLUE;
private int innerRoundColor=Color.CYAN;
// 10px
private int mRoundWidth = 10;
private float mProgressTextSize = 15;
private int mProgressTextColor = Color.BLUE;
private Paint mPaint, mTextPaint;
private int mMax = 100;
private int mProgress = 0;
SweepGradient mSweepGradient;
private Matrix matrix;
//旋转的角度
private int degree = 0;
public MyProgressBar(Context context) {
this(context, null);
}
public MyProgressBar(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyProgressBar(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
// 获取自定义属性
TypedArray array = context.obtainStyledAttributes(attrs, R.styleable.MyProgressBar);
outerRoundBorderColor_init = array.getColor(R.styleable.MyProgressBar_outerRoundBorderColor_init, outerRoundBorderColor_init);
outerRoundBorderColor_cover = array.getColor(R.styleable.MyProgressBar_outerRoundBorderColor_cover, outerRoundBorderColor_cover);
innerRoundBorderColor = array.getColor(R.styleable.MyProgressBar_innerRoundBorderColor, innerRoundBorderColor);
innerRoundColor = array.getColor(R.styleable.MyProgressBar_innerRoundColor, innerRoundColor);
mRoundWidth = (int) array.getDimension(R.styleable.MyProgressBar_roundBorderWidth, dip2px(10));
mProgressTextSize = array.getDimensionPixelSize(<