Custom SeekBar, который изменяет как цвет выполнения, так и цвет фона при буферизации

99
10



Я хочу создать пользовательский SeekBar, который имеет вторичный индикатор выполнения, но по умолчанию - от конца до конца и показывает прогресс для буферизованных данных.

Подумайте об этом как о поиске, предоставленном большинством онлайн-видеоплееров, например. YouTube. Таким образом, у всех есть стандартная панель поиска, ее индикатор выполнения по умолчанию и вторичный индикатор выполнения, который заполняет цвет независимо от основного хода/пользовательского перетаскивания метки поиска и просто зависит от буферизованных данных.


До сих пор у меня есть обычная стрелка, и она меняет цвет при перетаскивании/задании пользователя.
Может ли кто-нибудь помочь в этом?


Мой код:

seekbar_progress.xml


<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

<item
android:id="@android:id/background"
android:drawable="@drawable/progress_background_fill"/>
<item android:id="@android:id/progress">
<clip android:drawable="@drawable/progress_fill" />
</item>

</layer-list>


progress_fill.xml


<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

<gradient
android:angle="180"
android:centerColor="#FFB80000"
android:endColor="#FFFF4400"
android:startColor="#FF470000" />

<corners android:radius="5px" />

<stroke
android:width="2dp"
android:color="#50999999" />
<stroke
android:width="1dp"
android:color="#70555555" />

</shape>


progress_background_fill.xml


<gradient
android:angle="90"
android:centerColor="#FF555555"
android:endColor="#FF555555"
android:startColor="#FF555555" />

<corners android:radius="5px" />

<stroke
android:width="2dp"
android:color="#50999999" />
<stroke
android:width="1dp"
android:color="#70555555" />



применяя эти xml (s) следующим образом:


<SeekBar 
android:id="@+id/seek_hist_timeline"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:progressDrawable="@drawable/seekbar_progress" />

спросил(а) 2021-01-25T15:20:44+03:00 4 месяца, 2 недели назад
1
Решение
98

Добавьте еще один слой в ваш список слоев, который можно удалить с помощью id android:id/secondaryProgress

Обратитесь к этому ответу: qaru.site/questions/25865/...

ответил(а) 2021-01-25T15:20:44+03:00 4 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема