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

OSCHINA-MIRROR/zhuangguangquan-IndicatorSeekBar

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

Индикаторный ползунок

СКАЧАТЬ API Android Arsenal

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

Руководство на китайском

Обзор

Пример экрана

Демо

скачать apk

Сканирование 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 позволяет указателю всегда оставаться видимым. Кроме того, убедитесь, что вы вызвали атрибут для отображения указателя.

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);
```## Пользовательский вид индикатора

Вы можете настроить внешний вид индикатора следующими способами:

Если вы хотите заменить верхнюю часть вида индикатора, вызовите:
```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; //Истина, если применять цвет, иначе — нет изменения
    }
});

Поддержка выборщиков drawable и цветаВы можете установить StateListDrawable или ColorStateList для ползунка и меток;

также поддерживаются 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|Алипей|||

![Алипей](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. Создайте запрос.
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 )

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

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