English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Android에서 주사위 던지기 진행도 루프 구현

프로젝트에서 단계 진도를 나타내는 순환형 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);

순환선과 배경을 그리기:

canvas.drawArc(mRectF, -9, 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);

이것이 본 문서의 모든 내용입니다. 많은 도움이 되길 바랍니다. 또한, 나대호 교육에 많은 지지를 부탁드립니다.

선언: 본 문서의 내용은 인터넷에서 수집되었으며, 저작권자는 본사가 아닙니다. 인터넷 사용자가 자발적으로 기여하고 업로드한 내용으로, 본 사이트는 소유권을 가지지 않으며, 인공적인 편집 처리를 하지 않았으며, 이에 대한 법적 책임도 부담하지 않습니다. 저작권 문제가 의심되는 내용을 발견하시면, notice#w로 이메일을 보내 주시기 바랍니다.3codebox.com(보내는 이메일에서 #을 @으로 변경하시오)를 통해 신고하시고 관련 증거를 제공하시면, 사실 여부를 확인한 후 즉시 의심스러운 저작권 내용을 삭제하겠습니다。