Я хочу создать круговой индикатор выполнения проекта, например, в Inbox от Gmail android. Как мне это достичь (в устройствах с предварительной лепкой)?
Я пытаюсь добиться подобного эффекта. Входящие по кругу показателей выполнения материалов Gmail
Я хочу создать круговой индикатор выполнения проекта, например, в Inbox от Gmail android. Как мне это достичь (в устройствах с предварительной лепкой)?
Я пытаюсь добиться подобного эффекта. Входящие по кругу показателей выполнения материалов Gmail
Вот потрясающая реализация кругового промежуточного шага прогресса материала https://gist.github.com/castorflex/4e46a9dc2c3a4245a28e. В реализации только отсутствует возможность добавлять различные цвета, например, в папку "Входящие" с помощью приложения для Android, но это делает отличную работу.
Хорошая реализация для кругового индикатора выполнения материалов (от rahatarmanahmed/CircularProgressView),
<com.github.rahatarmanahmed.cpv.CircularProgressView
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/progress_view"
android:layout_width="40dp"
android:layout_height="40dp"
app:cpv_indeterminate="true"/>
<ProgressBar
android:id="@+id/loading_spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateTintMode="src_atop"
android:indeterminateTint="@color/your_customized_color"
android:layout_gravity="center" />
Эффект выглядит следующим образом:
Я передал три продвинутых чертежа проекта Material Design для Android 4.0, которые можно использовать как замену для обычного ProgressBar
с точно таким же внешним видом.
Эти чертежи также поддерживали обратные API-интерфейсы (и поддержку RTL) и использовали ?colorControlActivated
в качестве значения по умолчанию. Для удобства также был добавлен виджет MaterialProgressBar
, который расширяет ProgressBar
.
DreaminginCodeZH/MaterialProgressBar
Этот проект также был принят afollestad/material-dialogs для диалога выполнения.
В Android 4.4.4:
В Android 5.1.1:
В дополнение к запросу cozeJ4, здесь обновленная версия этого метода
Оригинал не имел импорта и содержал некоторые ошибки. Этот готовый к использованию.
Платформа использует векторный чертеж, поэтому его нельзя использовать повторно в старых версиях.
Тем не менее, поддержка lib v4 содержит backport этого drawable:
http://androidxref.com/5.1.0_r1/xref/frameworks/support/v4/java/android/support/v4/widget/MaterialProgressDrawable.java
Он имеет аннотацию @hide
(здесь для SwipeRefreshLayout), но ничто не мешает вам копировать этот класс в вашей кодовой базе.
Ищете способ сделать это, используя простой xml
, но не смогли найти полезные ответы, поэтому придумали это.
Это также работает на версиях с предварительным леллипопом, и это довольно близко к показателю прогресса материала. Вам просто нужно использовать этот drawable
как indeterminate drawable
в макете ProgressBar
.
<?xml version="1.0" encoding="utf-8"?><!--<layer-list>-->
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="360">
<layer-list>
<item>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="-90"
android:toDegrees="-90">
<shape
android:innerRadiusRatio="2.5"
android:shape="ring"
android:thickness="2dp"
android:useLevel="true"><!-- this line fixes the issue for lollipop api 21 -->
<gradient
android:angle="0"
android:endColor="#007DD6"
android:startColor="#007DD6"
android:type="sweep"
android:useLevel="false" />
</shape>
</rotate>
</item>
<item>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="270">
<shape
android:innerRadiusRatio="2.6"
android:shape="ring"
android:thickness="4dp"
android:useLevel="true"><!-- this line fixes the issue for lollipop api 21 -->
<gradient
android:angle="0"
android:centerColor="#FFF"
android:endColor="#FFF"
android:startColor="#FFF"
android:useLevel="false" />
</shape>
</rotate>
</item>
</layer-list>
</rotate>
установите приведенное выше значение в ProgressBar следующим образом:
android:indeterminatedrawable="@drawable/above_drawable"