1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/zhuangguangquan-IndicatorSeekBar

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_zh.md 14 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 15.03.2025 15:10 ccca778

Индикатор SeekBar

СКАЧАТЬ API Android Arsenal

Эта библиотека предназначена для создания кастомного SeekBar в Android. Если вам не требуется индикатор и вы хотите отображать текст над SeekBar, обратитесь к другой библиотеке Seek Bar. English.md.

Примеры

Скриншоты

Демо

Загрузите demo.apk

Сканирование для загрузки:

Инициализация

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>

Java

IndicatorSeekBar seekbar = IndicatorSeekBar
                .with(getContext())
                .max(50)
                .min(10)
                .showIndicatorType(IndicatorType.RECTANGLE) // свойство отображения индикатора не может быть none
                ...
                .build();

new IndicatorStayLayout(getContext()).attachTo(seekbar);

Настройка текста индикатора

Установите форматированную строку с плейсхолдерами ${PROGRESS} или ${TICK_TEXT} для IndicatorSeekBar. Это изменит текст индикатора.


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)
                .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 если применять цвет, иначе нет изменений
    }
});

Поддержка изображений или цветов типа Selector

Вы можете установить 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), как знак взаимной поддержки.

![АлиЭкспресс](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)

## Обратная связь

Если у вас есть вопросы по проекту, вы можете связаться со мной следующими способами:
1. Создайте issue.
2. Напишите мне на электронную почту, warkiz4j@gmail.com
```## Лицензия

Copyright © 2017 Zhuang Guoqiang

Разрешено использовать это программное обеспечение в соответствии с лицензией Apache License, версия 2.0 ("Лицензия"); вы можете использовать этот файл только в рамках этой Лицензии. Вы можете получить копию Лицензии по адресу:

http://www.apache.org/licenses/LICENSE-2.0

Кроме того, если законом или соглашением в письменной форме не требуется, программное обеспечение, распространяемое в соответствии с данной Лицензией, предоставляется «КАК ЕСТЬ», БЕЗ ВСЯКИХ УСЛОВИЙ ИЛИ ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЮЩИХ. См. Лицензию для конкретного языка, регулирующего права и ограничения, предусмотренные данной Лицензией.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/zhuangguangquan-IndicatorSeekBar.git
git@api.gitlife.ru:oschina-mirror/zhuangguangquan-IndicatorSeekBar.git
oschina-mirror
zhuangguangquan-IndicatorSeekBar
zhuangguangquan-IndicatorSeekBar
master