С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Т_Ё_М_А
24 / 7 / 2
Регистрация: 14.12.2009
Сообщений: 281
1

Таймер на паузу

06.11.2013, 15:40. Просмотров 1514. Ответов 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();
    
            }
        });
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2013, 15:40
Ответы с готовыми решениями:

Сделать паузу перед закрытием AlertDilaog
Всем, Здравствуйте. Задача простая. Выводится диалог "Скорость игры", там...

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

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

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

Как поставить поставить AsyncTask на паузу?
У меня есть некоторая проблемка в приложении, нужно поставить AsyncTask на...

10
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.11.2013, 03:32 2
сделать стек картинок и пусть таймер вытягивает с стека по картинке. при паузе просто убиваете таймер, при старте запускаете новый. начать заново - наполнить стек заново.
0
name?
199 / 170 / 52
Регистрация: 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++;
1
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
07.11.2013, 05:06 4
тоже вариант
еще добавить
Java
1
2
3
4
if (reset) {
       i = 0;
       reset = false;
}
1
Т_Ё_М_А
24 / 7 / 2
Регистрация: 14.12.2009
Сообщений: 281
07.11.2013, 18:44  [ТС] 5
Спасибо! И как я сам не догадался)

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

Добавлено через 1 час 20 минут
и можно как-то сделать, чтобы public void onFinish() срабатывал, когда count=x?
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
08.11.2013, 03:19 6
останавливается методом cancel. такие штуки нужно останавливать в onPause и возобновлять в onResume.
0
Т_Ё_М_А
24 / 7 / 2
Регистрация: 14.12.2009
Сообщений: 281
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();
0
V0v1k
1160 / 984 / 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++ ?
0
Т_Ё_М_А
24 / 7 / 2
Регистрация: 14.12.2009
Сообщений: 281
09.11.2013, 16:25  [ТС] 9
Цитата Сообщение от V0v1k Посмотреть сообщение
может repeat++ ?
нет, там идёт обратный отсчёт от 18 до нуля... И когда доходит до нуля - таймер должен остановиться. Чтобы долго не ждать каждый раз поставил не 0, а 16. repeat становиться равным 16, но таймер не останавливается...
0
V0v1k
1160 / 984 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
09.11.2013, 21:10 10
может у вас где-то в switch return раньше происходит или repeat изменяется. подебагайте.
1
Т_Ё_М_А
24 / 7 / 2
Регистрация: 14.12.2009
Сообщений: 281
10.11.2013, 19:28  [ТС] 11
Нашёл ошибку, спасибо. Надо было перед switch делать проверки...
0
10.11.2013, 19:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2013, 19:28

Таймер
Добрый день, написал вот такой код @Override public...

Таймер
Добрый день. Возникла накладка с таймером. Есть 10 картинок, необходимо чтобы...

Таймер
new CountDownTimer(1800000, 1000) { public void onTick(long...


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

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

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