Найти в Дзене
Making games is easy!

Программирование под Android. Бар загрузки ProgressBar.

Программирование под Android. Бар загрузки ProgressBar. Бар загрузки обычно показывает процент оставшийся от 100. В Android есть стандартные индикаторы выполнения. Выглядит это как “уменьшающаяся-увеличивающаяся” полоска. Бар может также просто показывать, что идет загрузка. В таком виде это обычно крутящийся полукруг. Хотя может быть и полоска, если указать ей атрибут “indeterminate” android:indeterminate="true" и стиль style="?android:attr/progressBarStyleHorizontal" Как правило, мы используем режим неопределенного прогресса в индикаторе выполнения, когда мы не знаем, сколько времени займет операция или сколько работы сделано. В неопределенном режиме фактический прогресс не будет показан, будет показана только циклическая анимация, чтобы указать, что происходит некоторый прогресс. В макете бар загрузки может выглядеть так (.xml файл) <ProgressBar
android:id="@+id/progressBar_igrok"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="130dp"
andr
Оглавление

Программирование под Android. Бар загрузки ProgressBar.

Бар загрузки обычно показывает процент оставшийся от 100.

В Android есть стандартные индикаторы выполнения.

Выглядит это как “уменьшающаяся-увеличивающаяся” полоска.

Бар может также просто показывать, что идет загрузка. В таком виде это обычно крутящийся полукруг.

-2

Хотя может быть и полоска, если указать ей атрибут “indeterminate”

android:indeterminate="true"

и стиль style="?android:attr/progressBarStyleHorizontal"

-3

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

В неопределенном режиме фактический прогресс не будет показан, будет показана только циклическая анимация, чтобы указать, что происходит некоторый прогресс.

В макете бар загрузки может выглядеть так (.xml файл)

<ProgressBar
android:id="@+id/progressBar_igrok"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="130dp"
android:layout_height="wrap_content"
android:background="@drawable/words_bg"
android:paddingRight="3dp"
android:paddingLeft="3dp"
android:layout_marginTop="5dp"

  android:max="100"

 android:indeterminate="false"

android:progress="50"
/>

У меня здесь подключено еще и фоновое изображение (в папке drawable называется words_bg).

Ширина 130dp

Высота по содержимому

Ну и внутренние и внешние отступы (padding и margin соответственно)

Ниже укажу некоторые из важных атрибутов индикатора выполнения:

progress: используется для установки значения прогресса, ваша программа должна периодически обновлять прогресс, чтобы индикатор выполнения отображал ход выполнения операции, которую он представляет.

indeterminate: используется для указания типа индикатора выполнения, значение true означает неопределенный прогресс.

indeterminateDrawable: используется для установки рисования для неопределенного индикатора выполнения.

indeterminateDuration: используется для установки продолжительности анимации для неопределенного индикатора выполнения.

indeterminateTint: используется для установки оттенка индикатора прогресса неопределенного индикатора выполнения.

progressBackgroundTint: используется для установки фона индикатора прогресса

progressTint: используется для установки оттенка индикатора прогресса.

progressDrawable: используется для установки детерминируемого индикатора выполнения.

min: используется для определения минимального значения.

max: используется для определения максимального значения.

Обычно, когда значение прогресса достигает 100, индикатор выполнения заполняется. Используя атрибут android: max, мы можем настроить это значение по умолчанию.

Другие стили индикатора выполнения, предоставляемые системой, включают:

· "?android:attr/progressBarStyleHorizontal"

· "?android:attr/progressBarStyleSmall"

· "?android:attr/progressBarStyleLarge"

· "?android:attr/progressBarStyleInverse"

· "?android:attr/progressBarStyleSmallInverse"

· "?android:attr/progressBarStyleLargeInverse"

Без указания стиля будет просто крутиться полукруг.

Другие атрибуты можно посмотреть в Android документации

https://developer.android.com/reference/android/widget/ProgressBar?hl=ru

Java файл (выдержки):

import android.widget.ProgressBar;

private ProgressBar progressBar_igrok;

// Ну и собственно наш бар

progressBar_igrok = (ProgressBar) findViewById(R.id.progressBar_igrok);

// Задаем значение (Понятное дело назначаем много раз с разными значениями в зависимости от степени загрузки)

progressBar_igrok.setProgress(100);

Вот так и все. Как видите все просто. Бар не автоматический, надо прописывать значения программой. Зачастую легче это сделать в процентах. Несложно вычислить процент загруженных данных. Например, в вашей базе данных 60 000 строк. Загружено предположим 41 100 строк.

41_100/60_000*100 = 68,5%

progressBar_igrok.setProgress(68,5); //(Понятное дело я написал схематично)

Не забывайте, что длительные загрузки осуществляют в фоновом потоке. Например с помощью AsyncTask

Если, вы хотите изменить цвет бара, то можно в файл styles.xml находящийся в папке values добавить

-4

<style name="AppTheme.BlackAccent">
    <
item name="colorAccent">#000000</item> <!-- Цвет который вы хотите --> </style>

В данном случае указываю черный цвет

А подключить можно так android:theme="@style/AppTheme.BlackAccent"

В макете это может выглядеть так

<ProgressBar
android:id="@+id/progressBar_igrok"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="130dp"
android:layout_height="wrap_content"
android:paddingRight="3dp"
android:paddingLeft="3dp"
android:layout_marginTop="5dp"

    android:indeterminate="true"

    android:theme="@style/AppTheme.BlackAccent

/>

Если вам нужно узнать текущий прогресс, либо максимальное значение, вы можете воспользоваться

ProgressBar  progressBar = (ProgressBar) findViewById(R.id.progressBar_igrok);

Toast.makeText(this, "Прогресс - "

+ progressBar.getProgress()

+ "\nМаксимальное значение - "

+ progressBar.getMax(), Toast.LENGTH_SHORT).show();

Можно сделать и пользовательский бар с плавной прозрачностью

Создадим файл xml в папке drawable

-5

Назовем его, например anim_file.xml

<?xml version="1.0" encoding="utf-8"?>

<animated-rotate xmlns:android="schemas.android.com/apk/res/android"

android:pivotX="50%"

android:pivotY="50%" >

<shape

android:innerRadiusRatio="4"

android:shape="ring"

android:thicknessRatio="5.333"

android:useLevel="false" >

<size

android:height="18dip"

android:width="18dip" />

<gradient

android:centerColor="#886688cc"

android:centerY="0.50"

android:endColor="#ff6688cc"

android:startColor="#006688cc"

android:type="sweep"

android:useLevel="false" />

</shape>

</animated-rotate>

Теперь подключим в макете нашу анимацию

<ProgressBar

    android:id="@+id/progressBar_igrok"


    android:layout_width="wrap_content"


    android:layout_height="wrap_content"


    android:paddingRight="3dp"


    android:paddingLeft="3dp"


    android:indeterminate="true"


    android:indeterminateDrawable="@drawable/anim_file"


    android:layout_gravity="center"


/>

Подписывайтесь на канал, не пропустите новые публикации. Ставьте палец вверх. :-)