Процентная диаграмма
Разнообразная библиотека для реализации процентных индикаторов выполнения, включая кольцевой, круговой и заполняющий стили.
Рисунок 1. Рисунок 2. Рисунок 3. Рисунок 4.
Рисунок 5. Рисунок 6. Рисунок 7. Рисунок 8.
Рисунок 9. Рисунок 10. Рисунок 11. Рисунок 12.
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
implementation project(':PercentageChartView')
……
}
Добавьте зависимость от PercentageChartView в файл build.gradle модуля.
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.har'])
……
implementation 'com.gitee.archermind-ti:PercentageChartView:1.0.0'
}
Добавьте ссылку на mavenCentral() в файл build.gradle проекта.
allprojects {
repositories {
……
mavenCentral()
}
}
<com.ramijemli.percentagechartview.PercentageChartView
ohos:id="@+id/view_id"
ohos:layout_width="match_parent"
ohos:layout_height="match_parent"
app:pcv_mode="pie"
app:pcv_orientation="counter_clockwise"
app:pcv_animDuration="800"
app:pcv_animInterpolator="anticipate_overshoot"
app:pcv_progress="10"
app:pcv_startAngle="90"/>
Имя | Формат | По умолчанию | Поддерживаемые режимы | Описание |
---|---|---|---|---|
pcv_mode |
enum |
pie |
- | Устанавливает внешний вид процентной диаграммы на «кольцо», «круг» или «заполнение». |
pcv_orientation |
enum |
clockwise |
Круг, кольцо | Определяет направление рисования прогресса как «по часовой стрелке» или «против часовой стрелки». |
pcv_startAngle |
integer |
0 |
Все | Устанавливает начальный угол рисования прогресса в диапазоне [0..360]. |
pcv_animDuration |
integer |
400 |
Все | Задаёт длительность анимации обновления прогресса. |
pcv_animInterpolator |
enum |
linear |
Все | Определяет интерполятор анимации обновления прогресса на «линейный», «ускорение», «замедление», «ускорение|замедление», «предвосхищение», «перерегулирование», «предвосхищение|перерегулирование», «отскок». |
pcv_drawBackground |
boolean |
true для кругового режима false для кольцевого режима |
Все | Указывает, следует ли рисовать фон. |
pcv_backgroundColor |
color |
#000000 |
Все | Устанавливает цвет фона. |
pcv_progress |
integer |
0 |
Все | Обозначает текущий прогресс. |
pcv_progressColor |
color |
Цвет акцента | Все | Определяет цвет прогресса. |
pcv_textColor |
color |
#ffffff |
Все | Настраивает цвет текста. |
pcv_textSize |
dimension |
#12sp |
Все | Регулирует размер текста в SP. |
pcv_typeface |
string |
Системный шрифт | Все | Назначает путь к файлу шрифта прогресса в папке assets. |
pcv_textStyle |
flag |
normal |
Все | Выбирает стиль текста прогресса на «нормальный», «жирный», «курсив», «полужирный|курсив». |
pcv_textShadowColor |
color |
#00ffffff |
Все | Управляет цветом тени/свечения текста. |
pcv_textShadowRadius |
string |
0 |
Все | Контролирует радиус тени/свечения текста. |
pcv_textShadowDistX |
float |
0 |
Все | Изменяет расстояние тени/свечения по оси X. |
pcv_textShadowDistY |
float |
0 |
Все | Модифицирует расстояние тени/свечения по оси Y. |
pcv_backgroundOffset |
dimension |
0dp |
Круг, заполнение | Устанавливает отступ только для фона. |
pcv_drawBackgroundBar |
boolean |
true |
Кольцо | Определяет, следует ли рисовать полосу фона. |
pcv_backgroundBarThickness |
dimension |
16dp |
Кольцо | Задаёт толщину полосы фона в DP. |
pcv_backgroundBarColor |
color |
#000000 |
Кольцо | Устанавливает цвет полосы фона. |
pcv_progressBarThickness |
dimension |
16dp |
Ring | Задаёт толщину полосы прогресса в DP. |
pcv_progressBarStyle |
enum |
round |
Ring | Устанавливает стиль полосы прогресса на «round» или «square». |
pcv_gradientType |
enum |
- | All | Определяет тип градиента для цветов полосы прогресса: "linear" , "radial" или "sweep" . (Sweep не поддерживается для режима заливки). |
pcv_gradientColors |
string |
- | All | Задаёт цвета градиента полосы прогресса в формате шестнадцатеричных значений цветов через запятую; "#F44336 , #2196F3 , #00BCD4" . |
pcv_gradientDistributions |
string |
- | All | Устанавливает распределение цветов градиента через запятую в виде значений с плавающей точкой; "0.2 , 0.5 , 0.8" . Значения должны быть монотонными и принадлежать диапазону [0..1]. Если цвета игнорируются, они будут распределены равномерно. |
pcv_gradientAngle |
integer |
pcv_startAngle |
All | Задает угол рисования линейного градиента цветов в диапазоне [0..360]. |
Атрибуты pcv_startAngle
и pcv_gradientAngle
принимают значения следующей диаграммы.
Все атрибуты XML, кроме атрибута pcv_mode
(на данный момент), имеют соответствующий атрибут Java.
Можно изменить и вызвать метод apply()
, чтобы установить обновление. Это обеспечит перерисовку представления.
mChart.textColor(Color.BLACK)
.textSize(sizeSp)
.typeface(typeface)
.textShadow(Color.WHITE, 2f, 2f, 2f)
.progressColor(Color.RED)
.backgroundColor(Color.BLACK)
.apply();
Для отдельного обновления можно вызвать необходимый метод setter. Например, setTextSize (sizeSp)
.
Чтобы использовать свойства цвета каждого прогресса, необходимо использовать метод setAdaptiveColorProvider()
и передать класс AdaptiveColorProvider
.
Адаптивные цвета могут применяться к полосе прогресса, фону, тексту и фоновой панели.
Стоит отметить, что приоритет градиентных цветов выше предоставленных цветов, вы можете игнорировать переопределение ненужных методов, поскольку по умолчанию существует реализация.
AdaptiveColorProvider colorProvider = new AdaptiveColorProvider() {
@Override
public int provideProgressColor(float progress) {
if (progress <= 25)
return colorOne;
else if (progress <= 50)
return colorTwo;
else if (progress <= 75)
return colorThree;
else return colorFour;
}
@Override
public int provideBackgroundColor(float progress) {
//This will provide a bg color that is 80% darker than progress color.
return ColorUtils.blendARGB(provideProgressColor(progress), Color.BLACK, .8f);
}
@Override
public int provideTextColor(float progress) {
return provideProgressColor(progress);
}
@Override
public int provideBackgroundBarColor(float progress) {
return ColorUtils.blendARGB(provideProgressColor(progress), Color.BLACK, .5f);
}
};
mPieChart.setAdaptiveColorProvider(colorProvider);
Можно отслеживать изменения полосы прогресса, установив OnProgressChangeListener
.
chart.setOnProgressChangeListener(new PercentageChartView.OnProgressChangeListener() {
@Override
public void onProgressChanged(float progress) {
Log.d(TAG, String.valueOf(progress));
}
});
Для текста можно использовать другие единицы вместо процентов. Необходимо использовать метод setTextFormatter()
и передать класс ProgressTextFormatter
.
mRingChart.setTextFormatter(new ProgressTextFormatter() {
@Override
public String provideFormattedText(float progress) {
int days = (int) (progress * maxDays / 100);
return days + " days";
}
});
Copyright 2019 Rami Jemli
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions
and limitations under the License.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )