if(currentType == TYPE_FILL) {
mPaint.setColor(getContext().getResources().getColor(R.color.green_yellow));
mPaint.setAntiAlias(true);
mPaint.setAlpha(128);
mPaint.setStrokeWidth(1.0f);
Rect rect = new Rect();
//先获取Button的边框
canvas.getClipBounds(rect);
rect.left += getPaddingLeft();
//填充条的右边界根据当前进度来计算
rect.top += getPaddingTop();
rect.right = (rect.left - getPaddingLeft()) + (mProgress * getWidth() / 100) - getPaddingRight();
rect.bottom -= getPaddingBottom();
//绘制一个圆角的长条,这样相对好看一点
canvas.drawRoundRect(new RectF(rect), 8.0f, 8.0f, mPaint);
}
else if(currentType == TYPE_STROKE) {
//初始化画笔
mPaint.setAntiAlias(true);
mPaint.setColor(getContext().getResources().getColor(R.color.green_yellow));
mPaint.setAlpha(255);
//获取Button的边框
Rect rect = new Rect();
canvas.getClipBounds(rect);
Paint paint1, paint2, paint3, paint4;
//根据当前进度,确定是绘制哪条边,其实也是绘制一个矩形,只不过这个矩形比较扁或是比较窄而已,类似一条边
if(mProgress >= 0 && mProgress < 25) {
paint1 = new Paint(mPaint);
Rect temp = new Rect(rect.left + getPaddingLeft(),
rect.top + getPaddingTop(),
rect.left + mProgress * (getWidth() - getPaddingLeft() - getPaddingRight())
/ 25 - getPaddingRight(),
rect.top + getPaddingTop() + 2);
canvas.drawRect(temp, paint1);
} else if(mProgress < 50) {
paint1 = new Paint(mPaint);
Rect rect1 = new Rect(rect.left + getPaddingLeft(),
rect.top + getPaddingTop(), rect.right - getPaddingRight(),
rect.top + getPaddingTop() + 2);
canvas.drawRect(rect1, paint1);
paint2 = new Paint(mPaint);
Rect rect2 = new Rect(rect.right - getPaddingRight() - 2,
rect.top + getPaddingTop(), rect.right - getPaddingRight(),
rect.top + getPaddingTop() + (mProgress - 25) *
(getHeight() - getPaddingTop() - getPaddingBottom()) / 25);
canvas.drawRect(rect2, paint2);
} else if(mProgress < 75) {
paint1 = new Paint(mPaint);
Rect rect1 = new Rect(rect.left + getPaddingLeft(),
rect.top + getPaddingTop(), rect.right - getPaddingRight(),
rect.top + getPaddingTop() + 2);
canvas.drawRect(rect1, paint1);
paint2 = new Paint(mPaint);
Rect rect2 = new Rect(rect.right - getPaddingRight() - 2,
rect.top + getPaddingTop(), rect.right - getPaddingRight(),
rect.bottom - getPaddingBottom());
canvas.drawRect(rect2, paint2);
paint3 = new Paint(mPaint);
Rect rect3 = new Rect(
rect.right - getPaddingRight() - (mProgress - 50) *
(getWidth() - getPaddingLeft() - getPaddingRight()) / 25,
rect.bottom - getPaddingBottom() - 2,
rect.right - getPaddingRight(),
rect.bottom - getPaddingBottom());
canvas.drawRect(rect3, paint3);
} else if(mProgress <= 100) {
paint1 = new Paint(mPaint);
Rect rect1 = new Rect(
rect.left + getPaddingLeft(),
rect.top + getPaddingTop(), rect.right - getPaddingRight(),
rect.top + getPaddingTop() + 2);
canvas.drawRect(rect1, paint1);
paint2 = new Paint(mPaint);
Rect rect2 = new Rect(
rect.right - getPaddingRight() - 2,
rect.top + getPaddingTop(), rect.right - getPaddingRight(),
rect.bottom - getPaddingBottom());
canvas.drawRect(rect2, paint2);
paint3 = new Paint(mPaint);
Rect rect3 = new Rect(
rect.left + getCompoundPaddingLeft(),
rect.bottom - getPaddingBottom() - 2, rect.right - getPaddingRight(),
rect.bottom - getPaddingRight());
canvas.drawRect(rect3, paint3);
paint4 = new Paint(mPaint);
Rect rect4 = new Rect(
rect.left + getCompoundPaddingLeft(),
rect.bottom - getPaddingBottom() - (mProgress - 75) *
(getHeight() - getPaddingTop() - getPaddingBottom()) / 25,
rect.left + getPaddingLeft() + 2,
rect.bottom - getPaddingBottom());
canvas.drawRect(rect4, paint4);
}
}
public void updateProgress(int progress) {
if(progress >= 0 && progress <= 100) {
mProgress = progress;
invalidate();
} else if(progress < 0) {
mProgress = 0;
invalidate();
} else if(progress > 100) {
mProgress = 100;
invalidate();
}
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有