Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/12: Рейтинг темы: голосов - 12, средняя оценка - 4.83
cezer_ak
4 / 4 / 3
Регистрация: 14.02.2013
Сообщений: 232
1

Свой собственный прогресс бар

04.12.2013, 22:00. Просмотров 2278. Ответов 5
Метки нет (Все метки)

Доброй ночи ув. Программисты.

4й час в поисках и без результатно все одно и то же. А того что надо нет.
Подскажите как реализовать следующее:

- Есть AsyncTask который выполняет определённые действия
- Есть 25 картинок следующего вида: Название: progress.jpg
Просмотров: 483

Размер: 3.6 Кб
- Есть Лист Анимации xml:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 <animation-list
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:oneshot="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <item android:drawable="@drawable/a1" android:duration="250"/>
        <item android:drawable="@drawable/a2" android:duration="250"/>
        <item android:drawable="@drawable/a3" android:duration="250"/>
        <item android:drawable="@drawable/a4" android:duration="250"/>
        <item android:drawable="@drawable/a5" android:duration="250"/>
        <item android:drawable="@drawable/a6" android:duration="250"/>
        <item android:drawable="@drawable/a7" android:duration="250"/>
        <item android:drawable="@drawable/a8" android:duration="250"/>
        <item android:drawable="@drawable/a9" android:duration="250"/>
        <item android:drawable="@drawable/a10" android:duration="250"/>
        <item android:drawable="@drawable/a11" android:duration="250"/>
        <item android:drawable="@drawable/a12" android:duration="250"/>
        <item android:drawable="@drawable/a13" android:duration="250"/>
        <item android:drawable="@drawable/a14" android:duration="250"/>
        <item android:drawable="@drawable/a15" android:duration="250"/>
        <item android:drawable="@drawable/a16" android:duration="250"/>
        <item android:drawable="@drawable/a17" android:duration="250"/>
        <item android:drawable="@drawable/a18" android:duration="250"/>
        <item android:drawable="@drawable/a19" android:duration="250"/>
        <item android:drawable="@drawable/a20" android:duration="250"/>
        <item android:drawable="@drawable/a21" android:duration="250"/>
        <item android:drawable="@drawable/a22" android:duration="250"/>
        <item android:drawable="@drawable/a23" android:duration="250"/>
        <item android:drawable="@drawable/a24" android:duration="250"/>
        <item android:drawable="@drawable/a25" android:duration="250"/>
    </animation-list>
- Есть xml разметка:
XML
1
2
3
4
5
6
7
8
9
10
11
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom|left|right|top"
        android:layout_margin="50dp" />
</RelativeLayout>
как заставить в AsynkTask в методе:
Java
1
2
protected void onProgressUpdate(Integer... progress) {
        }
Работать прогресс бар не бесконечно а только тогда когда идет загрузка данных в AsynkTask.

Иногда бывает что данные уже успели загрузиться а анимация ещё идёт или на оборот данных нет а анимация уже закончилась.

Подскажите пожалуйста как решить данную проблему.
За ранее спасибо всем кто откликнется!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.12.2013, 22:00
Ответы с готовыми решениями:

Прогресс бар в кнопку
Здравствуйте! Подскажите пожалуйста как сделать кнопку, умеющую на себе...

Собственный статус-бар
Народ, знает кто как создать собственный статус бар? У меня есть приложение,...

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

Убрать статус бар
Добрый день. Как я понимаю есть action bar и status bar. В моем приложении...

Изменить статус бар!
Как изменить статус бар? Добавлено через 21 минуту верней DroidDraw

5
KillAndEat
63 / 63 / 8
Регистрация: 17.05.2013
Сообщений: 286
04.12.2013, 22:27 2
Если известен объем загружаемых данных, то меняйте картинку только при достижении определенного количества считанных байт.
Привязать каждую картинку к числовому значению, которое будет отражать процент загрузки. При загрузке файла этот самый процент и считать. Отображать только ту картинку к которой "прикреплено" получившееся число.
Если файл изначально меньше буфера сразу выводите финальную картинку.
1
Netscape
374 / 361 / 52
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
04.12.2013, 22:41 3
Цитата Сообщение от cezer_ak Посмотреть сообщение
Иногда бывает что данные уже успели загрузиться а анимация ещё идёт или на оборот данных нет а анимация уже закончилась.
Не удивительно, она ведь длится 25*250/1000 секунд.

Как по мне, лучше сразу использовать готовые решения:
https://github.com/Todd-Davies/ProgressWheel
https://github.com/f2prateek/progressbutton
0
cezer_ak
4 / 4 / 3
Регистрация: 14.02.2013
Сообщений: 232
05.12.2013, 16:06  [ТС] 4
Цитата Сообщение от KillAndEat Посмотреть сообщение
...
Мне понравилась ваша идея!

А как на счет того что у меня нет объёма загружаемого.

У меня есть 3и последовательно выполняемых AsyncTask, каждый из них занимает своё количество определённого времени(Зависит от скорости интернета).

- Первый просто отправляет на сервер запрос в конце запуская второй Asynk
- Второй отправляет и парсит в конце запуская третий Asynk
- Третий парсит и выводит результат.

У каждого из них есть
onProgressUpdate, OnPostexecute, OnPreexecute и тд.

как тут быть?

Если есть готовый вариант (про то что вы говорили), могу ли я взглянуть?

Добавлено через 8 часов 53 минуты
Цитата Сообщение от KillAndEat Посмотреть сообщение
...
Пришёл к вот такому коду:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
public class MainActivity extends Activity {
    private static final String TAG = "MyApp";
    private ProgressDialog progressDialog;
    Button buttonStart;
    public String a;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        buttonStart = (Button) findViewById(R.id.buttonStart);   
 
    }
    public void onclick(View v) {
        new MyTask().execute();
    }
 
    class MyTask extends AsyncTask<String, Integer, Void> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            buttonStart.setVisibility(View.INVISIBLE);
            progressDialog = new ProgressDialog(MainActivity.this);
            progressDialog.setCancelable(true);
            progressDialog.setProgressDrawable(getResources().getDrawable(R.drawable.a1));
            progressDialog.show();
        }
        @Override
        protected Void doInBackground(String... urls) {
           for (int i = 1; i < 25; i ++) {
                a = "a" + i;
            }
            return null;
        }
 
        @Override
        protected void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);       
            Resources res = getResources();
            int myId = res.getIdentifier(a, "drawable", "app.pogress");
            Drawable d = res.getDrawable(myId);
            progressDialog.setProgressDrawable(getResources().getDrawable(R.drawable.a1));
            progressDialog.setProgressDrawable(d);
        }
 
        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
          
        }
 
 
    }
 
 
}
Но он мне выводит по чему то обычный ProgressBar в диалоге.

Что я тут напортачил, подскажите?
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
05.12.2013, 16:58 5
Цитата Сообщение от cezer_ak Посмотреть сообщение
Но он мне выводит по чему то обычный ProgressBar в диалоге.
А где в doInBackground вызов метода publishProgress?
1
GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
05.12.2013, 21:03 6
Огого, 25 картинок - это круто))
Думаю тут надо делать одну картинку, просто вращать ее и накладывать поверх, создавая копии.

Для того, чтобы правильно отображать прогресс - определите сколько задач всего происходит в потоках и примите их за 100%. А далее уже дело за малым.

Если я знаю, например, что три потока парсят разное количество объектов, то перед парсингом я дождусь получения общего количества объектов и внесу в прогрессбар maxValue = количеству объектов.

А затем буду отображать прогресс.
0
05.12.2013, 21:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.12.2013, 21:03

Бар show телефона
Как убpать веpхний баp телефона?!

Всплывающий бар с кнопкой как в slack
Ребят очень хочу такой бар для оффлайн сообщений сделать, может знает кто куда...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru