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, -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);
Это конец статьи, надеюсь, она поможет вам в изучении. Также希望大家多多支持呐喊教程。
Декларация: содержимое статьи предоставлено из Интернета, авторские права принадлежат соответствующему автору, контент предоставлен пользователями Интернета в качестве добровольного вклада и загружен самостоятельно, сайт не обладает правами собственности, не был отредактирован вручную и не несет ответственности за связанные с этим юридические обязательства. Если вы обнаружите контент,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (при отправке письма замените # на @) для подачи жалобы,并提供 соответствующие доказательства. При подтверждении факта нарушения авторских прав сайт незамедлительно удаляет涉嫌侵权的内容.