English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
프로젝트에서 단계 진도를 나타내는 순환형 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(보내는 이메일에서 #을 @으로 변경하시오)를 통해 신고하시고 관련 증거를 제공하시면, 사실 여부를 확인한 후 즉시 의심스러운 저작권 내용을 삭제하겠습니다。