2014-11-30 2 views
137

Есть ли у вас какие-либо идеи, как сделать круговой индикатор выполнения, как приложение Google Fit? Как изображение ниже.Как создать круговой ProgressBar в android?

enter image description here

+7

В последнее время я сделал что-то подобное. Это может быть полезной отправной точкой? https://github.com/daentech/CircularDemo – daentech

+0

@daentech Отлично! спасибо – Mohamed

+1

Кто-нибудь получил ответ, где края загружаемой части закруглены, как в примере? – Siebe

ответ

120

Вы можете попробовать эту Circle Progress библиотеку

enter image description here

enter image description here

NB: всегда используйте одинаковую ширину и высоту для прогресса просмотров

DonutProgress:

<com.github.lzyzsd.circleprogress.DonutProgress 
     android:id="@+id/donut_progress" 
     android:layout_marginLeft="50dp" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     custom:circle_progress="20"/> 

CircleProgress:

<com.github.lzyzsd.circleprogress.CircleProgress 
     android:id="@+id/circle_progress" 
     android:layout_marginLeft="50dp" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     custom:circle_progress="20"/> 

ArcProgress:

<com.github.lzyzsd.circleprogress.ArcProgress 
     android:id="@+id/arc_progress" 
     android:background="#214193" 
     android:layout_marginLeft="50dp" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     custom:arc_progress="55" 
     custom:arc_bottom_text="MEMORY"/> 
+0

как они показывают текущие значения im try setProgress in on protected void onProgressUpdate() { \t \t \t super.onProgressUpdate(); \t \t \t Log.d (TAG, "onProgressUpdate"); progressBar.setProgress (progressBar.getProgress() + j); \t \t \t Log.d (TAG, "onProgressUpdate perc:" + j); \t \t \t updateMemoryAndCountValues ​​(); \t \t \t \t \t} но ее не работает – Erum

+0

@top Cat Как я могу добавить анимацию как приближая в процессе окружности или http://mikinw.blogspot.com/2013/03/glow-effect.html – user3233280

+0

I хотите использовать DonutPrgress, но хотите, чтобы выполнялся цвет градиента, а также округленный край в одном углу. Как я могу это достичь? – pyus13

304

Это легко создать это самостоятельно

В вашем макете указаны следующие ProgressBar с конкретным рисунком (), вы должны получить ширину от размеров вместо). Здесь важно максимальное значение:

<ProgressBar 
    android:id="@+id/progressBar" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_width="150dp" 
    android:layout_height="150dp" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:max="500" 
    android:progress="0" 
    android:progressDrawable="@drawable/circular" /> 

Теперь создайте вытягиваемые в своих ресурсах следующие формы. Играйте с радиусом (вы можете использовать innerRadius вместо innerRadiusRatio) и значения толщины.

круговой (Предварительно леденец ИЛИ уровень API < 21)

<shape 
     android:innerRadiusRatio="2.3" 
     android:shape="ring" 
     android:thickness="3.8sp" > 
     <solid android:color="@color/yourColor" /> 
    </shape> 

круговой (> = леденец ИЛИ уровень API> = 21)

<shape 
     android:useLevel="true" 
     android:innerRadiusRatio="2.3" 
     android:shape="ring" 
     android:thickness="3.8sp" > 
     <solid android:color="@color/yourColor" /> 
    </shape> 

useLevel является " false " по умолчанию в API Level 21 (Lollipop).

Start Animation

Далее в коде использовать ObjectAnimator анимировать поле ходе работы ProgessBar вашего макета.

ProgressBar progressBar = (ProgressBar) view.findViewById(R.id.progressBar); 
ObjectAnimator animation = ObjectAnimator.ofInt (progressBar, "progress", 0, 500); // see this max value coming back here, we animate towards that value 
animation.setDuration (5000); //in milliseconds 
animation.setInterpolator (new DecelerateInterpolator()); 
animation.start(); 

Stop Animation

progressBar.clearAnimation(); 

P.S. в отличие от приведенных выше примеров, она обеспечивает плавную анимацию.

+1

можете ли вы дать полную демонстрацию этого? –

+5

шагов, если вы последуете этому, 99% уверены, что вы получите результат. –

+0

Есть ли способ добавить текст в центр индикатора выполнения? –

Смежные вопросы