Android 自定义进度条_第1张图片

github:https://github.com/HarryXR/android

  • 水平进度条
    测量
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {     int textHeight = ViewUtils.getTextHeight(mAlertTextPaint);    int height = 0;  if (!TextUtils.isEmpty(mLeftAlert) ||                   !TextUtils.isEmpty(mRightAlert))  {        height += textHeight;  //加上文字高度  }  height += LINE_MARGIN;    height += STROKE_WIDTH * 2;    height += LINE_MARGIN; if (!TextUtils.isEmpty(mLeftContent) || !TextUtils.isEmpty(mRightContent)) {        height += textHeight;    }    setMeasuredDimension(widthMeasureSpec, height);}

ViewUtils测量文本高度

public static int getTextHeight(Paint paint) {    Paint.FontMetrics fontMetrics = paint.getFontMetrics();   return (int) Math.ceil(fontMetrics.descent - fontMetrics.ascent);}

画进度

private void drawProgress(Canvas canvas) {    //画灰色进度    Paint bgPaint = getProgressPaint();     bgPaint.setColor(mProgressBg);    //左右扣除半个圆距离    canvas.drawLine(STROKE_WIDTH / 2, mHeight / 2, mWidth -       STROKE_WIDTH / 2, mHeight / 2, bgPaint);    //画绿色进度     Paint progressPaint = getProgressPaint();        progressPaint.setColor(mProgressColor);   int stopX = (int) ((mWidth - STROKE_WIDTH) * mProgress);    canvas.drawLine(STROKE_WIDTH / 2, mHeight / 2, stopX, mHeight / 2, progressPaint);    //画指示      Paint textPaint = getIndicatorPaint();    int textWidth = ViewUtils.getTextWidth(textPaint, mAlert);   Paint indicatorPaint = getProgressPaint();    indicatorPaint.setColor(mIndicatorBg);    indicatorPaint.setStrokeWidth(ALERT_STROKE_WIDTH);    canvas.drawLine(stopX - textWidth / 2, mHeight / 2, stopX + textWidth / 2, mHeight / 2, indicatorPaint);    //画指示文字    Paint.FontMetrics fm = textPaint.getFontMetrics();  int alertY = mHeight / 2 + (int) (Math.abs(fm.bottom + fm.top)) / 2;     canvas.drawText(mAlert, stopX - textWidth / 2, alertY, textPaint);}
  • 圆环
    大家看源码吧,涉及到一些数学公式的计算,原理类似

更多相关文章

  1. 安卓开发---进度条
  2. android实现进度条ProgressDialog
  3. 【Demo实例】Android FTP上传带进度条(优化后代码)
  4. android圆形进度条ProgressBar颜色设置
  5. android中自定义进度条风格
  6. android之实现ProgressBar进度条组件
  7. 进度条与拖动条的使用学习
  8. Android魔术——手把手教你实现水晶球波浪进度条
  9. android 里面的测量单位

随机推荐

  1. android 输入法出现挤压屏幕、android输
  2. android所有控件
  3. android单选按钮RadioGroup的详细使用
  4. android中的数据库操作
  5. Android中drawable各个属性讲解
  6. Android学习系列之一
  7. Android(安卓)属性大全
  8. Android(安卓)Handler机制4之Looper与Han
  9. android 应用移植到ophone 平台需注意
  10. Android(安卓)JNI简单实例(android 调用C/