Форум программистов, компьютерный форум CyberForum.ru

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

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

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

11.03.2016, 13:28. Просмотров 201. Ответов 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?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2016, 13:28     Progress Button, как вызвать метод, а после закончить Progress?
Посмотрите здесь:

Как менять 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
Значит имеется некая активность, которая запускает сервер по нажатии кнопки, этот сервер в свою очередь запускает выполнение своей фоновой...

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

Не получается вызвать метод onDraw(); - Программирование Android
Здравствуйте! Я новичок в разработке приложений под android и сегодня безрезультатно провел день, т.к. не знаю решения моей проблемы....

OnClickListener не может вызвать метод с MainActivity - Программирование Android
В MainActivity в onClickListener я могу вызвать метод selectCardFromList: public class MainActivity extends AppCompatActivity { ...

Поменять картинку у button после клика (не у ImageButton) - Программирование Android
Приветствую. Есть кнопка &lt;Button android:id=&quot;@+id/button1&quot; android:layout_width=&quot;fill_parent&quot; ...

Как привязать Location к Button - Программирование Android
Всем привет! Не получается привязать свое место положение к Button. Помогите решить проблему,спасибо. public void...

RadioButton как обычный Button - Программирование Android
Как сделать чтобы радио баттон выглядел как обычный баттон, но работал как радио баттон? скрин для наглядности:


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
disx
20 / 20 / 0
Регистрация: 26.02.2014
Сообщений: 533
Записей в блоге: 1
14.03.2016, 11:30  [ТС]     Progress Button, как вызвать метод, а после закончить Progress? #2
может кто-нибудь подскажет как быть?
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
14.03.2016, 12:34     Progress Button, как вызвать метод, а после закончить Progress? #3
disx, так чего, у вас же есть private OnCompleteListener mListener, соответственно, надо в обработчике этого события прописать закрытие прогрессбара, а в начале действия - его открытие.
disx
20 / 20 / 0
Регистрация: 26.02.2014
Сообщений: 533
Записей в блоге: 1
14.03.2016, 16:13  [ТС]     Progress Button, как вызвать метод, а после закончить Progress? #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, а надо чтоб он показывал прогресс работы метода(ов)?
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
14.03.2016, 16:25     Progress Button, как вызвать метод, а после закончить Progress? #5
Цитата Сообщение от disx Посмотреть сообщение
а надо чтоб он показывал прогресс работы метода(ов)
Начали мысль в верном направлении, но сделали неверно. Действительно, надо убирать анимацию после выполнения sendSMS. Я не очень вник в ваш код, но допустим, у вас правильно выставлен момент запуска sendSMS (может быть, можно его и раньше где-то запустить). В этом случае надо снимать анимацию не сразу, а после выполнения sendSMS. Т.е. в конце этой процедуры тоже прописать обратный вызов или использовать какой-нибудь BroadcastReceiver (не знаю, как правильно). И уже в этом обратном вызове снимать анимацию.
Yandex
Объявления
14.03.2016, 16:25     Progress Button, как вызвать метод, а после закончить Progress?
Ответ Создать тему
Опции темы

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