Форум программистов, компьютерный форум, киберфорум
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 565
Записей в блоге: 1
#1

Progress Button, как вызвать метод, а после закончить Progress? - Программирование Android

11.03.2016, 13:28. Просмотров 241. Ответов 4
Метки нет (Все метки)

Есть кнопка с прогрессом, по ее клику вызывается это:

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 private void sendProgress (final LinearProgressButton button){
               int progressColor = color(R.color.mb_purple);
        int color = color(R.color.mb_gray);
        int progressCornerRadius = dimen(R.dimen.mb_corner_radius_4);
        int width = dimen(R.dimen.mb_width_200);
        int height = dimen(R.dimen.mb_height_8);
        int duration = integer(R.integer.mb_animation);
               ProgressGenerator generator = new ProgressGenerator(new ProgressGenerator.OnCompleteListener() {
            @Override
            public void onComplete() {
                morphToSuccess(button);
 
                button.unblockTouch();
 
 
            }
        });
       button.blockTouch(); // prevent user from clicking while button is in progress
       button.morphToProgress(color, progressColor, progressCornerRadius, width, height, duration);
        generator.start(button);
 
   }


класс ProgressGenerator:
Кликните здесь для просмотра всего текста
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
public class ProgressGenerator {
 
    DialogSend ds;
    final String LOG_TAG = "myLogs";
    public interface OnCompleteListener {
 
        void onComplete();
    }
 
    private OnCompleteListener mListener;
    public static int mProgress;
 
    public ProgressGenerator(OnCompleteListener listener) {
        mListener = listener;
    }
 
    public void start(final IProgress button, int duration) {
        mProgress = 0;
        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                mProgress += 1;
                button.setProgress(mProgress);
                if (mProgress < 100) {
                   // Log.d(LOG_TAG, "Ok");
 
                    handler.postDelayed(this, generateDelay());
                } else {
                    mListener.onComplete();
                }
            }
        }, duration);
    }
 
 
    public void start(final IProgress button) {
        start(button, 500);
    }
 
   private Random random = new Random();
 
    private int generateDelay() {
//        ds.sendSMS();
 
      return random.nextInt(100);
    }
}

в том же классе где вызывается sendProgress, есть метод public void sendSMS() в нем код по отправке SMS.

как и где вызвать этот метод чтобы пока он не выполнится "бежал" progress?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2016, 13:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Progress Button, как вызвать метод, а после закончить Progress? (Программирование Android):

Как менять message AlertDialog в зависимости от progress SeekBar? - Программирование Android
Доброго времени суток) В моём приложении при нажатии на TextVeiw появляется AlertDialog, в который я всунул SeekBar. Нужно, чтобы message...

Progress Bar и мультипоточность - Программирование Android
Добрый день, имеется клас который достает данные с базы данных и генерит на их основе таблицу TableLayout, когда я его вызываю в onCreate()...

Сменить цвет progress bar программно - Программирование Android
Привет. Собственно сабж. Что я понял, фон прогресс бара хранится в drawable в 3-х слоях, это бэкгроунд, вторичный прогресс и прогресс...

Как вызвать метод только при последующих запусках приложения? - Программирование Android
Доброго времени суток))) В приложении реализую систему сохранения. Нужно, чтобы при первом запуске появлялись &quot;дефолтные&quot; значения, а при...

Клиент bluetooth. как в кнопке правильно вызвать метод для подключения? - Программирование Android
нашел в интернете готовый класс private class ConnectThread extends Thread { private final BluetoothSocket mmSocket; ...

Как из одного потока вызвать метод таким образом, чтобы он выполнялся в другом потоке - Программирование Android
Значит имеется некая активность, которая запускает сервер по нажатии кнопки, этот сервер в свою очередь запускает выполнение своей фоновой...

4
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 565
Записей в блоге: 1
14.03.2016, 11:30  [ТС] #2
может кто-нибудь подскажет как быть?
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,734
14.03.2016, 12:34 #3
disx, так чего, у вас же есть private OnCompleteListener mListener, соответственно, надо в обработчике этого события прописать закрытие прогрессбара, а в начале действия - его открытие.
0
disx
23 / 23 / 0
Регистрация: 26.02.2014
Сообщений: 565
Записей в блоге: 1
14.03.2016, 16:13  [ТС] #4
CoolMind, т.е. я сюда в onComplete положил свой метод:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
    ProgressGenerator generator = new ProgressGenerator(new ProgressGenerator.OnCompleteListener() {
            @Override
            public void onComplete() {
 
                sendSMS();
                morphToSuccess(button); //это анимирует кнопку когда SMS отправлено и получено получателем
                 button.unblockTouch(); // это разблокирует кнопку, для следующей отправки
 
            }
        });
       button.blockTouch(); // prevent user from clicking while button is in progress
       button.morphToProgress(color, progressColor, progressCornerRadius, width, height, duration);
        generator.start(button);
так вопрос в том что я себе это представлял как-то так, послеполного выполнения метода sendSMS(); анимируется кнопка morphToSuccess(button);

а при указанном выше раскладе картина такая:
1 кликаем кнопку - побежал прогресс
2 он добегает до конца - останавливается
3 срабатывает sendSMS и сразу же анимируется кнопка мол все отправлено,
4 а только через пару сек появляется Toast об успешном получении сообщения получателем.

т.е. если я правильно понимаю когда прогресс уже остановился происходит отправка SMS, а надо чтоб он показывал прогресс работы метода(ов)?
0
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,734
14.03.2016, 16:25 #5
Цитата Сообщение от disx Посмотреть сообщение
а надо чтоб он показывал прогресс работы метода(ов)
Начали мысль в верном направлении, но сделали неверно. Действительно, надо убирать анимацию после выполнения sendSMS. Я не очень вник в ваш код, но допустим, у вас правильно выставлен момент запуска sendSMS (может быть, можно его и раньше где-то запустить). В этом случае надо снимать анимацию не сразу, а после выполнения sendSMS. Т.е. в конце этой процедуры тоже прописать обратный вызов или использовать какой-нибудь BroadcastReceiver (не знаю, как правильно). И уже в этом обратном вызове снимать анимацию.
0
14.03.2016, 16:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.03.2016, 16:25
Привет! Вот еще темы с ответами:

Как в Android положить один объект (button) на другой (button)? - Программирование Android
Скажите, как можно положить один объект на другой, так что бы они оба были кликабельными? У менять есть две кнопки примыкающие друг к...

Как вызвать метод в активити классе из обычного не активити класса? - Программирование Android
Есть активити в котором вводятся логин и пароль. При нажатии кнопки &quot;войти&quot; в отдельном классе &quot;сокетсервер&quot;(+в отдельном потоке)...

Вызвать метод класса - Программирование Android
получил ссылку на класс по его имени Class &lt;?&gt; cls = null; try { cls = Class.forName(classname); } catch...

Progress Bar - КАК? - Visual C++
как мне отобразить процесс хода вычисления в Progress Bar Control? вот например мне надо в Progress Bar Control отобразить отобразить...


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

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

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