Подтвердить что ты не робот

Как реализовать круговую полосу прогресса дизайна материала в android

Я хочу создать круговой индикатор выполнения проекта, например, в Inbox от Gmail android. Как мне это достичь (в устройствах с предварительной лепкой)?

Я пытаюсь добиться подобного эффекта. Входящие по кругу показателей выполнения материалов Gmail

4b9b3361

Ответ 1

Вот потрясающая реализация кругового промежуточного шага прогресса материала https://gist.github.com/castorflex/4e46a9dc2c3a4245a28e. В реализации только отсутствует возможность добавлять различные цвета, например, в папку "Входящие" с помощью приложения для Android, но это делает отличную работу.

Ответ 2

Хорошая реализация для кругового индикатора выполнения материалов (от 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"/>

enter image description here

Ответ 3

<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" />

Эффект выглядит следующим образом:

img

Ответ 4

Я передал три продвинутых чертежа проекта Material Design для Android 4.0, которые можно использовать как замену для обычного ProgressBar с точно таким же внешним видом.

Эти чертежи также поддерживали обратные API-интерфейсы (и поддержку RTL) и использовали ?colorControlActivated в качестве значения по умолчанию. Для удобства также был добавлен виджет MaterialProgressBar, который расширяет ProgressBar.

DreaminginCodeZH/MaterialProgressBar

Этот проект также был принят afollestad/material-dialogs для диалога выполнения.

В Android 4.4.4:

Android 4.4.4

В Android 5.1.1:

Android 5.1.1

Ответ 6

Платформа использует векторный чертеж, поэтому его нельзя использовать повторно в старых версиях. Тем не менее, поддержка lib v4 содержит backport этого drawable: http://androidxref.com/5.1.0_r1/xref/frameworks/support/v4/java/android/support/v4/widget/MaterialProgressDrawable.java Он имеет аннотацию @hide (здесь для SwipeRefreshLayout), но ничто не мешает вам копировать этот класс в вашей кодовой базе.

Ответ 7

Ищете способ сделать это, используя простой 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"