Как отобразить горизонтальный индикатор неопределенности прогресса Android - PullRequest
41 голосов
/ 23 июня 2011

Как показать неопределенный горизонтальный индикатор в Android? Анимация индикатора выполнения должна начинаться с 0 до 100, а затем непрерывно возвращаться с 100 на 0. Я не ищу индикатор выполнения колеса.

Ответы [ 5 ]

42 голосов
/ 23 июня 2011

Я уже знал, что setIndeterminate даст бесконечный горизонтальный индикатор выполнения.Но это будет похоже на загрузочное колесо, за исключением того, что оно будет горизонтальным.Если вы видите мой вопрос, я искал турник, который начинается с 0 и проходит до 100 (постепенное увеличение).Если вы хотите добиться этого в Android, вы должны использовать индикатор выполнения, как показано ниже:

 <ProgressBar
    android:id="@+id/progress_horizontal"
    android:indeterminateOnly="false"
    android:indeterminateDrawable="@drawable/progress_indeterminate_horizontal"
    android:progressDrawable="@drawable/progress_horizontal"
    android:minHeight="24dip"
    android:maxHeight="24dip" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"/>

Поскольку я хотел изменить фон моего индикатора выполнения, я изменил ProgressDrawable и IndeterminateDrawable.Оригинальные чертежи находятся под frameworks/base/core/res/res/drawable.Скопируйте их в свой проект и измените цвет в соответствии с вашими потребностями.

Создайте поток, который обновляет счетчик выполнения и выполняет Thread.Sleep.Затем он отправляет сообщение обработчику, который обновит индикатор выполнения в потоке пользовательского интерфейса.

11 голосов
/ 23 июня 2011

Используйте метод setIndeterminate ProgressBar:

android.widget.ProgressBar bar = new android.widget.ProgressBar(context);
bar.setIndeterminate(true);

Но да, вы могли бы найти это довольно быстро в документации для разработчиков.

http://developer.android.com/reference/android/widget/ProgressBar.html#setIndeterminate%28boolean%29

8 голосов
/ 05 января 2016

Чтобы расширить Vinoth Ответ, вот готовый код:

<ProgressBar
        android:id="@+id/progressBarLoadingRecite"
        android:indeterminateDrawable="@android:drawable/progress_indeterminate_horizontal"
        android:minHeight="24dip"
        android:layout_marginTop="20dip"
        android:indeterminate="true"
        android:maxHeight="24dip"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
2 голосов
/ 03 октября 2018

Возможно, немного поздно, но вы можете сделать что-то вроде этого:

<ProgressBar
    android:id="@+id/progress"
    android:layout_width="match_parent"
    android:layout_height="10dp"
    android:indeterminate="true"
    style="?android:attr/progressBarStyleHorizontal" />

Надеюсь, это кому-нибудь поможет!

2 голосов
/ 09 июня 2015

В xml, определяющем ваш индикатор выполнения, вы можете добавить

style="@android:style/Widget.ProgressBar.Horizontal"
...