Это кастомизируемая библиотека SeekBar для Android. Также, если вам не нужен индикатор и вы хотите отображать метки над ползунком, пожалуйста, обратитесь к другой библиотеке.
Сканирование QR-кода для скачивания:
implementation 'com.github.warkiz.widget:indicatorseekbar:2.1.2'
```## Использование
#### XML```xml
<com.warkiz.widget.IndicatorSeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:isb_max="100"
app:isb_min="-1.0"
app:isb_progress="25"
app:isb_seek_smoothly="true"
app:isb_ticks_count="5"
app:isb_show_tick_marks_type="oval"
app:isb_tick_marks_size="13dp"
app:isb_tick_marks_drawable="@mipmap/ic_launcher"
app:isb_show_tick_texts="true"
app:isb_tick_texts_size="15sp"
app:isb_tick_texts_color="@color/color_blue"
app:isb_thumb_color="@color/color_green"
app:isb_thumb_size="20dp"
app:isb_show_indicator="rounded_rectangle"
app:isb_indicator_color="@color/color_gray"
app:isb_indicator_text_color="@color/colorAccent"
app:isb_indicator_text_size="18sp"
app:isb_track_background_color="@color/color_gray"
app:isb_track_background_size="2dp"
app:isb_track_progress_color="@color/color_blue"
app:isb_track_progress_size="4dp"
app:isb_only_thumb_draggable="false"/>
```#### Java```Java
IndicatorSeekBar seekBar = IndicatorSeekBar
.with(getContext())
.max(110)
.min(10)
.progress(53)
.tickCount(7)
.showTickMarksType(TickMarkType.OVAL)
.tickMarksColor(getResources().getColor(R.color.color_blue, null))
.tickMarksSize(13) // dp
.showTickTexts(true)
.tickTextsColor(getResources().getColor(R.color.color_pink))
.tickTextsSize(13) // sp
.tickTextsTypeFace(Typeface.MONOSPACE)
.showIndicatorType(IndicatorType.ROUNDED_RECTANGLE)
.indicatorColor(getResources().getColor(R.color.color_blue))
.indicatorTextColor(Color.parseColor("#ffffff"))
.indicatorTextSize(13) // sp
.thumbColor(getResources().getColor(R.color.colorAccent, null))
.thumbSize(14)
.trackProgressColor(getResources().getColor(R.color.colorAccent, null))
.trackProgressSize(4)
.trackBackgroundColor(getResources().getColor(R.color.color_gray))
.trackBackgroundSize(2)
.onlyThumbDraggable(false)
.build();
Установка IndicatorSeekBar
в IndicatorStayLayout
позволяет указателю всегда оставаться видимым.
Кроме того, убедитесь, что вы вызвали атрибут для отображения указателя.
<com.warkiz.widget.IndicatorStayLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- ваш макет -->
<com.warkiz.widget.IndicatorSeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:isb_show_indicator="rectangle" <!-- отображение указателя не может быть NONE -->
.../>
<!-- ваш макет -->
</com.warkiz.widget.IndicatorStayLayout>
IndicatorSeekBar seekBar = IndicatorSeekBar
.with(getContext())
.max(50)
.min(10)
.showIndicatorType(IndicatorType.RECTANGLE) // отображение указателя не может быть NONE
...
.build();
```new IndicatorStayLayout(getContext()).attachTo(seekBar);
```## Пользовательский вид индикатора
Вы можете настроить внешний вид индикатора следующими способами:
Если вы хотите заменить верхнюю часть вида индикатора, вызовите:
```java
seekBar.getIndicator().setTopContentView(yourTopView);
или если вы хотите настроить вид индикатора по своему усмотрению, вызовите:
seekBar.getIndicator().setContentView(yourView);
Установите строку с форматированием и заполнителем ${PROGRESS}
или ${TICK_TEXT}
, чтобы текст индикатора менялся.
Например:
Если вы хотите отображать прогресс с суффиксом: %
, код будет таким:
seekBar.setIndicatorTextFormat("${PROGRESS} %");
Kotlin:
seekBar.setIndicatorTextFormat("\${PROGRESS} %");
или если вы хотите отображать текст метки с префиксом: Я -
, код будет таким:
seekBar.setIndicatorTextFormat("Я - ${TICK_TEXT}");
Kotlin:
seekBar.setIndicatorTextFormat("Я - \${TICK_TEXT}");
Цвет каждой секции ползунка также можно настроить.
seekBar.customSectionTrackColor(new ColorCollector() {
@Override
public boolean collectSectionTrackColor(int[] colorIntArr) {
//Длина массива colorIntArr равна количеству секций
colorIntArr[0] = getResources().getColor(R.color.color_blue, null);
colorIntArr[1] = getResources().getColor(R.color.color_gray, null);
colorIntArr[2] = Color.parseColor("#FF4081");
...
return true; //Истина, если применять цвет, иначе — нет изменения
}
});
также поддерживаются ColorStateList для текста меток. Формат использования соответствует следующим примерам:Выборщик drawable для ползунка:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Этот drawable используется для ползунка при нажатии -->
<item android:drawable="@mipmap/ic_launcher_round" android:state_pressed="true" />
<!-- Для ползунка в обычном состоянии -->
<item android:drawable="@mipmap/ic_launcher" />
</selector>
Выборщик цвета для ползунка:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Этот цвет используется для ползунка при нажатии -->
<item android:color="@color/colorAccent" android:state_pressed="true" />
<!-- Для ползунка в обычном состоянии -->
<item android:color="@color/color_blue" />
</selector>
Выборщик drawable для TickMarks:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Этот drawable предназначен для TickMarks, расположенных с начала ползунка -->
<item android:drawable="@mipmap/ic_launcher_round" android:state_selected="true" />
<!-- Для TickMarks в обычном состоянии -->
<item android:drawable="@mipmap/ic_launcher" />
</selector>
Выборщик цвета для TickMarks:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Этот цвет предназначен для отметок, расположенных с начала ползунка -->
<item android:color="@color/colorAccent" android:state_selected="true" />
<!-- Для отметок, расположенных справа от ползунка -->
<item android:color="@color/color_gray" />
</selector>
TickTexts выборник цвета:```xml
```## Слушатель ```Java seekBar.setOnSeekChangeListener(new OnSeekChangeListener() { @Override public void onSeeking(SeekParams seekParams) { Log.i(TAG, seekParams.seekBar); Log.i(TAG, seekParams.progress); Log.i(TAG, seekParams.progressFloat); Log.i(TAG, seekParams.fromUser); // когда количество отметок > 0 Log.i(TAG, seekParams.thumbPosition); Log.i(TAG, seekParams.tickText); } @Override
public void onStartTrackingTouch(IndicatorSeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(IndicatorSeekBar seekBar) {
}
});
## Атрибуты
[attr.xml](https://github.com/warkiz/IndicatorSeekBar/blob/master/indicatorseekbar/src/main/res/values/attr.xml)
## Донат через [PayPal](https://www.paypal.me/BuyMeACupOfTeaThx), спасибо очень приятно получать ваши пожертвования или слова поддержки, и я опубликую это в моих [благодарностях](https://github.com/warkiz/IndicatorSeekBar#Благодарности),
спасибо.
## Пожертвовать ([Алипей](https://github.com/warkiz/IndicatorSeekBar/blob/master/app/src/main/res/mipmap-xxhdpi/alipay.png?raw=true))([WeChat Pay](https://github.com/warkiz/IndicatorSeekBar/blob/master/app/src/main/res/mipmap-xxhdpi/wechat_pay.png?raw=true))
С тех пор как я опубликовал QR-коды в документации, я получил несколько пожертвований от друзей из Китая, хотя суммы были небольшие, но слова поддержки и одобрения действительно радуют меня. Большое спасибо всем.Большое спасибо всем друзьям, которые поддерживали меня ранее. Если вы решите сделать мне пожертвование в следующий раз, напишите также ваш адрес GitHub, я буду благодарен за возможность привязать его с помощью [ссылки](https://github.com/warkiz/IndicatorSeekBar#Thanksgiving), чтобы мы могли поддерживать друг друга.## Благодарности
Большое спасибо всем друзьям из списка, ваша поддержка и одобрение — моя самая большая мотивация для движения вперед!
|Имя/Никнейм|Дата|Способ платежа|Комментарий|Дружественная ссылка|
|:---:|:---:|:---:|:---:|:---:|
|[E*e]|2019-06-27|WeChat|||
|[*●]|2019-06-14|WeChat|||
|[*宣]|2019-06-05|Алипей|||
|[*圆]|2019-05-29|Алипей|Прибавь силы|[GitHub/SaltedFish999](https://github.com/SaltedFish999)|
|[*兴明]|2019-02-12|Алипей||[GitHub/jdpxiaoming](https://github.com/jdpxiaoming)|
|[*j!n]|2019-01-08|WeChat|666|[GitHub/jincom](https://github.com/jincom)|
|[*乐]|2018-12-19|Алипей|||
|[*勇]|2018-12-05|WeChat|||
|[*天佑]|2018-11-05|Алипей|||
|[*勇]|2018-10-16|Алипей|||
|[*利成]|2018-05-22|Алипей|||


## Обратная связь
Если у вас возникнут проблемы с этим проектом, не стесняйтесь обращаться ко мне:
1. Создайте запрос.
2. Отправьте мне сообщение электронной почты, "warkiz".concat("4j").concat("@").concat("gmail.com")## Лицензия
Copyright (C) 2017 zhuangguangquan
Разрешено по лицензии Apache License, Версия 2.0 («Лицензия»);
вы можете использовать этот файл только в соответствии с Лицензией.
Вы можете получить копию Лицензии по адресу
http://www.apache.org/licenses/LICENSE-2.0
Если это не требуется применимым законом или письменно согласовано, программное обеспечение
распространяемое по Лицензии распространяется на условиях «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ ВСЕГО РОДА, как явленных, так и подразумеваемых.
Смотрите Лицензию для конкретного языка, регулирующего права и ограничения по Лицензии.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )