Android 가 스텝 진 도 를 계산 하 는 링 Progress 를 실현 합 니 다.

프로젝트 에서 걸음 진 도 를 계산 하 는 링 Progress 를 실현 해 야 합 니 다.목 표를 설정 하지 못 했 을 때 특정한 라디안(이미 실현 한 걸음 수/목표 걸음 수)*360°)의 원 호 를 그립 니 다.이미 실현 한 걸음 수가 목표 걸음 수 와 같 을 때 전체 360°링 을 그립 니 다.
효과 그림:

코드 구현:
완 료 된 걸음 수 와 목표 걸음 수 를 설정 합 니 다:

  public void setStep(int stepDone, int stepGoal) {
    this.stepDone = stepDone;
    this.stepGoal = stepGoal;
    int progess = (stepDone * 100) / stepGoal;
    if (progess > 100) {
      setProgress(100);
    } else {
      setProgress(progess);
    }
  }

진도 설정:

  public void setProgress(int progress) {
    this.mProgress = progress;
    this.invalidate();
  }

화필 속성 설정:

mPaint.setAntiAlias(true);
mPaint.setColor(Color.rgb(0xe9, 0xe9, 0xe9));
canvas.drawColor(Color.TRANSPARENT);
mPaint.setStrokeWidth(LINE_WIDTH_BG);
mPaint.setStyle(Paint.Style.STROKE);
그림%1 개의 캡 션 을 편 집 했 습 니 다.

canvas.drawArc(mRectF, -90, 360, false, mPaint);
mPaint.setColor(Color.rgb(0xf8, 0x60, 0x30));
canvas.drawArc(mRectF, -90, ((float) mProgress / mMaxProgress) * 360, false, mPaint);

걸음 수 와 단위 그리 기:

mPaint.setStrokeWidth(TEXT_WIDTH);
    String text = stepDone + context.getString(R.string.step_unit);
    int textHeight = height / 4;
    mPaint.setTextSize(textHeight);
    int textWidth = (int) mPaint.measureText(text, 0, text.length());
    mPaint.setStyle(Paint.Style.FILL);
    canvas.drawText(text, width / 2 - textWidth / 2, height / 2 + textHeight / 4, mPaint);

대상 걸음 수 그리 기:

 String textGoal = "/" + stepGoal;
    int textGoalHeight = height / 8;
    mPaint.setTextSize(textGoalHeight);
    int textGoalWidth = (int) mPaint.measureText(textGoal, 0, textGoal.length());
    mPaint.setStyle(Paint.Style.FILL);
    canvas.drawText(textGoal, width / 2 - textGoalWidth / 2, height / 2 + textHeight / 2
        + textGoalHeight, mPaint);
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기