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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
Т_Ё_М_А
23 / 6 / 2
Регистрация: 14.12.2009
Сообщений: 282
#1

Таймер на паузу - Программирование Android

06.11.2013, 15:40. Просмотров 1300. Ответов 10
Метки нет (Все метки)

Доброго времени суток.
В ImageView загружаются картинки каждые 0,3 секунды. Есть кнопка play, которая включает анимацию. Нужно добавить "паузу" и "начать заново". Как это можно сделать?
Кликните здесь для просмотра всего текста
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
final ImageView exercise = (ImageView)findViewById(R.id.imageView1);
       exercise.setImageResource(R.drawable.k_1);
       final ImageButton play = (ImageButton)findViewById(R.id.imageButton1);
       play.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                                
                new CountDownTimer(20*60000, 300) {
                    int i=1, id_img;
                    public void onTick(long millisUntilFinished) {
                        switch (i) {
                        case 1: id_img = R.drawable.k_1;      break;
                        case 2: id_img = R.drawable.k_2;      break;
                        case 3: id_img = R.drawable.k_3;      break;
                        case 4: id_img = R.drawable.k_4;      break;
                        case 5: id_img = R.drawable.k_5;      break;
                        case 6: id_img = R.drawable.k_6;      break;
                        case 7: id_img = R.drawable.k_7;      break;
                        case 8: id_img = R.drawable.k_8;      break;
                        case 9: id_img = R.drawable.k_9;      break;
                        .
                        .
                        .
                        case 44: id_img = R.drawable.k_44; break;
                        
                        
                      }
                         exercise.setImageResource(id_img);
                         i++;
                         if (i>44) {i=18;}
                    }
 
                    public void onFinish() {
                      
                    }
                 }.start();
    
            }
        });
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2013, 15:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Таймер на паузу (Программирование Android):

Сделать паузу перед закрытием AlertDilaog - Программирование Android
Всем, Здравствуйте. Задача простая. Выводится диалог "Скорость игры", там четыре скорости. Реализую с помощью AlertDialog с...

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

Как правильно сделать паузу в ходе работы приложения? - Программирование Android
Здравствуйте, Всем. Необходимо просто в ходе выполнения программы сделать паузу в 1 секунда. Погуглил, почитал, что то совсем...

Как сделать паузу — запретить нажатие кнопок на 5 секунд? - Программирование Android
Принцип игры - вопросы на время. По кнопке "Старт" запускается таймер обратного отсчета, кнопка превращается в "Далее" и, пока работает...

Как поставить поставить AsyncTask на паузу? - Программирование Android
У меня есть некоторая проблемка в приложении, нужно поставить AsyncTask на паузу в методе onPause(), когда открывается новое activity. Я...

Таймер - Программирование Android
new CountDownTimer(1800000, 1000) { public void onTick(long millisUntilFinished) { mTextField.setText("seconds...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.11.2013, 03:32 #2
сделать стек картинок и пусть таймер вытягивает с стека по картинке. при паузе просто убиваете таймер, при старте запускаете новый. начать заново - наполнить стек заново.
name?
198 / 169 / 18
Регистрация: 01.06.2010
Сообщений: 371
Завершенные тесты: 1
07.11.2013, 04:58 #3
Java
1
2
3
4
5
boolean pause;
play.setOnClickListener(new OnClickListener() {
....
if(!pause)
i++;
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.11.2013, 05:06 #4
тоже вариант
еще добавить
Java
1
2
3
4
if (reset) {
       i = 0;
       reset = false;
}
Т_Ё_М_А
23 / 6 / 2
Регистрация: 14.12.2009
Сообщений: 282
07.11.2013, 18:44  [ТС] #5
Спасибо! И как я сам не догадался)

Ещё 1 вопрос: как остановить таймер? А то он продолжает работать после закрытия activity, и даже после закрытия приложения.

Добавлено через 1 час 20 минут
и можно как-то сделать, чтобы public void onFinish() срабатывал, когда count=x?
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
08.11.2013, 03:19 #6
останавливается методом cancel. такие штуки нужно останавливать в onPause и возобновлять в onResume.
Т_Ё_М_А
23 / 6 / 2
Регистрация: 14.12.2009
Сообщений: 282
08.11.2013, 19:12  [ТС] #7
Не работает cancel. Или я его не так вызываю?
Кликните здесь для просмотра всего текста
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
play.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View arg0) {
                markerPause=false;  
                timer = new CountDownTimer(20*60000, 300) {
                    
                    
                    public void onTick(long millisUntilFinished) {
                        switch (i) {
                        case 1:....break;
                        .
                        .
                        .   
                    case 61:... break;
                        
                    
                        
                      }
                        
                         if(markerPause==false){
                             exercise.setImageResource(id_img);
                         i++;
                         }
                         if(markerReset==true){i=1; markerReset=false;}
                         if (i>61) {i=36;        repeat--;      }
 
                         if(repeat==16){timer.cancel();}
                    }
 
                    public void onFinish() {
                        
                     
                    }
                 }.start();
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
09.11.2013, 02:52 #8
Java
1
2
3
 if (i>61) {i=36;        repeat--;      }
 
                         if(repeat==16){timer.cancel();}
может repeat++ ?
Т_Ё_М_А
23 / 6 / 2
Регистрация: 14.12.2009
Сообщений: 282
09.11.2013, 16:25  [ТС] #9
Цитата Сообщение от V0v1k Посмотреть сообщение
может repeat++ ?
нет, там идёт обратный отсчёт от 18 до нуля... И когда доходит до нуля - таймер должен остановиться. Чтобы долго не ждать каждый раз поставил не 0, а 16. repeat становиться равным 16, но таймер не останавливается...
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
09.11.2013, 21:10 #10
может у вас где-то в switch return раньше происходит или repeat изменяется. подебагайте.
Т_Ё_М_А
23 / 6 / 2
Регистрация: 14.12.2009
Сообщений: 282
10.11.2013, 19:28  [ТС] #11
Нашёл ошибку, спасибо. Надо было перед switch делать проверки...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2013, 19:28
Привет! Вот еще темы с ответами:

Таймер - Программирование Android
Добрый день, написал вот такой код @Override public void run() { ...

Таймер - Программирование Android
Добрый день. Возникла накладка с таймером. Есть 10 картинок, необходимо чтобы каждую секунду менялась одна картинка. (Скрин прикрепил, это...

Таймер в Java - Программирование Android
сделал я вот такой код для таймера: TextView text; new CountDownTimer(30000, 1000) { public void onTick(long...

Таймер с вибрацией - Программирование Android
Как сделать так, чтобы по окончании CountDownTimer , телефон вибрировал. Вибрация разрешена в манифесте и android.os.Vibrator подключено. ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.11.2013, 19:28
Ответ Создать тему
Опции темы

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