Эта библиотека предназначена для создания кастомного SeekBar в Android. Если вам не требуется индикатор и вы хотите отображать текст над SeekBar, обратитесь к другой библиотеке Seek Bar. English.md.
Сканирование для загрузки:
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" />
После помещения IndicatorSeekBar
в IndicatorStayLayout
, можно сделать так, чтобы индикатор всегда оставался на месте. Перед этим убедитесь, что вы используете свойства для отображения индикатора.#### XML
<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);
Установите форматированную строку с плейсхолдерами ${PROGRESS}
или ${TICK_TEXT}
для IndicatorSeekBar
. Это изменит текст индикатора.
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)
.build();
``````markdown
### Пример:
Если вы хотите отображать индикатор прогресса с процентами в конце: `%`, используйте следующий код:
```java
seekbar.setIndicatorTextFormat("${PROGRESS} %");
Kotlin:
seekbar.setIndicatorTextFormat("\${PROGRESS} %")
Если вы хотите отображать текст тика с префиксом Я -
:
seekbar.setIndicatorTextFormat("Я - ${TICK_TEXT}");
Kotlin:
seekbar.setIndicatorTextFormat("Я - \${TICK_TEXT}")
Цвет каждого сектора трека seekbar может быть установлен:
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; // True если применять цвет, иначе нет изменений
}
});
Вы можете установить StateListDrawable или ColorStateList для ползунка и отметок тика, а также ColorStateList для текста под отметками тика. Формат использования следующий:
Изображение ползунка Selector:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Это изображение используется для ползунка при нажатии -->
<item android:drawable="@mipmap/ic_launcher_round" android:state_pressed="true"/>
<!-- Для ползунка в нормальном состоянии -->
<item android:drawable="@mipmap/ic_launcher"/>
</selector>
Цвет ползунка 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>
```Изображение отметок тика Selector:
```xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Это изображение используется для отметок тика слева от ползунка -->
<item android:drawable="@mipmap/ic_launcher_round" android:state_selected="true"/>
<!-- Для отметок тика в нормальном состоянии -->
<item android:drawable="@mipmap/ic_launcher"/>
</selector>
```
Цвет маркера выборника:
```xml
<?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>
```
Цвет текста выборника:
```xml
<?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_blue" android:state_hovered="true" />
<!-- Для текста справа от ползунка -->
<item android:color="@color/color_gray" />
</selector>
```
## Слушатель
```java
seekBar.setOnSeekChangeListener(new OnSeekChangeListener() {
@Override
public void onSeeking(SeekParams p) {
Log.i(TAG, String.valueOf(seekParams.seekBar));
Log.i(TAG, String.valueOf(seekParams.progress));
Log.i(TAG, String.valueOf(seekParams.progressFloat));
Log.i(TAG, String.valueOf(seekParams.fromUser));
// Когда количество маркеров больше 0
Log.i(TAG, String.valueOf(seekParams.thumbPosition));
Log.i(TAG, seekParams.tickText);
}
@Override
public void onStartTrackingTouch(IndicatorSeekBar seekBar) {
}
});
``````markdown
## Атрибуты
[attr.xml](https://github.com/warkiz/IndicatorSeekBar/blob/master/indicatorseekbar/src/main/res/values/attr.xml)
## Донат через PayPal, спасибо
Очень приятно получать ваши пожертвования или добрые слова, а также размещать их в списке благодарностей [благодарности](https://github.com/warkiz/IndicatorSeekBar#Thanks-lists),
спасибо.
## Поддержите проект (АлиПай) (WeChat Pay) С момента публикации QR-кода в документах я получил несколько подарков от друзей из Китая. Хотя суммы были небольшие, слова поддержки и одобрения все равно радуют меня. Большое спасибо всем!
Большое спасибо всем друзьям, которые поддерживали меня ранее. Если вы решите сделать мне подарок в следующий раз, можете также указать свой адрес GitHub, и я добавлю его здесь с помощью [ссылки](https://github.com/warkiz/IndicatorSeekBar#Thanks-lists), как знак взаимной поддержки.


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