Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/55: Рейтинг темы: голосов - 55, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 30.10.2013
Сообщений: 25

Таймер Android Studio

13.02.2017, 17:34. Показов 10430. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу сделать кнопку возобновления. Помогите пожалуйста.
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package app.coundowntimer;
 
import android.os.CountDownTimer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
 
import java.util.concurrent.CountDownLatch;
 
public class MainActivity extends AppCompatActivity {
 
    EditText editText;
 
    Button start, stop, Continue;
 
    TextView textView;
 
    int currentCount;
 
    CountDownTimer countDownTimer;
 
    String text;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        editText = (EditText) findViewById(R.id.editText);
        text = editText.getText().toString();
 
        start = (Button) findViewById(R.id.Start);
        stop = (Button) findViewById(R.id.Stop);
        Continue = (Button) findViewById(R.id.Continue);
 
        textView = (TextView) findViewById(R.id.textView);
 
        start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String text = editText.getText().toString();
                if (!text.equalsIgnoreCase("")) {
                    int seconds = Integer.valueOf(text);
                    countDownTimer = new CountDownTimer(seconds * 1000, 1000) {
 
 
 
 
                        @Override
                        public void onTick(long millis) {
                            textView.setText("seconds:" + (int) millis / 1000);
 
                            currentCount = (int) millis / 1000;
 
                        }
 
                        @Override
                        public void onFinish() {
                            textView.setText("Finished");
 
                        }
                    }.start();
 
                }
            }
        });
 
//приостановление таймера
            stop.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v){
 
                    countDownTimer.cancel();
 
                }
            });
 
// возобновление таймера
        Continue.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                text = " " + currentCount;
 
                countDownTimer.start();
            }
        });
    }
 
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.02.2017, 17:34
Ответы с готовыми решениями:

Android Studio таймер, картинка, как?
Добрый день. 1) Как сделать так что бы TextView менялся каждую секунду? 2) Как сделать так что бы ImageView по клику увеличивался в 1.5...

(Android studio, java) Ошибка при импорте библиотеки cannot resolve symbol android studio
Вот библиотека https://github.com/mik3y/usb-serial-for-android. Устанавливал так, File -> New -> Import module. Студия ругается на...

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

9
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
13.02.2017, 18:01
Почему бы вместо этого:
Java
1
countDownTimer.start();
не создать новый таймер с временем окончания, равным тому, что там в эдиттексте введено минус то, что прошло уже в первом таймере?
0
0 / 0 / 0
Регистрация: 30.10.2013
Сообщений: 25
13.02.2017, 18:08  [ТС]
А можно это в коде написать?
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
13.02.2017, 18:38
Можно.
0
0 / 0 / 0
Регистрация: 30.10.2013
Сообщений: 25
13.02.2017, 20:16  [ТС]
Как? Напишите пожалуйста код, как это будет выглядеть?
0
1570 / 1168 / 426
Регистрация: 08.05.2012
Сообщений: 5,219
13.02.2017, 21:14
Код таймера у тебя уже есть, только вместо этого:
Java
1
new CountDownTimer(seconds * 1000, 1000)
будет что-то такое, если я правильно разобрал:
Java
1
new CountDownTimer((seconds-currentCount)  * 1000, 1000)
Добавлено через 2 минуты
только в текствью к текущему значению надо прибавлять предыдущее значение (currentCount).
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
14.02.2017, 13:49
Antoshkka, недавно решал подобную задачу. CountDownTimer - ерунда на один раз. Требует создания нового объекта каждый раз. Лучше решать задачу через Handler и Runnable. Там можно делать возобновление, рестарт таймера.
0
0 / 0 / 0
Регистрация: 30.10.2013
Сообщений: 25
15.02.2017, 14:27  [ТС]
CoolMind, у вас есть пример предложенного решения? Можете скинуть?
0
111 / 111 / 43
Регистрация: 24.05.2015
Сообщений: 329
15.02.2017, 15:52
MainActivity.java

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
58
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
 
    private TextView timerValue;
    private long startTime = 0L;
    private Handler customHandler = new Handler();
    long timeInMilliseconds = 0L;
    long timeSwapBuff = 0L;
    long updatedTime = 0L;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        timerValue = (TextView) findViewById(R.id.tv_timer_value);
 
        Button startButton = (Button) findViewById(R.id.btn_start);
        Button pauseButton = (Button) findViewById(R.id.btn_pause);
        Button stopButton = (Button) findViewById(R.id.btn_stop);
        startButton.setOnClickListener(this);
        pauseButton.setOnClickListener(this);
        stopButton.setOnClickListener(this);
    }
 
    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn_start:
                startTime = SystemClock.uptimeMillis();
                customHandler.postDelayed(updateTimerThread, 0);
                break;
            case R.id.btn_pause:
                timeSwapBuff += timeInMilliseconds;
                customHandler.removeCallbacks(updateTimerThread);
                break;
            case R.id.btn_stop:
                startTime = 0L;
                customHandler.removeCallbacks(updateTimerThread);
                timerValue.setText(getString(R.string.timer_val));
                break;
        }
    }
 
    private Runnable updateTimerThread = new Runnable() {
        public void run() {
            timeInMilliseconds = SystemClock.uptimeMillis() - startTime;
            updatedTime = timeSwapBuff + timeInMilliseconds;
 
            int secs = (int) (updatedTime / 1000);
            int mins = secs / 60;
            secs = secs % 60;
            int milliseconds = (int) (updatedTime % 1000);
            timerValue.setText("" + mins + ":" + String.format("%02d", secs) + ":" + String.format("%03d", milliseconds));
            customHandler.postDelayed(this, 0);
        }
    };
}
activity_main.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
32
33
34
35
36
37
38
39
40
41
42
43
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
 
    <TextView
        android:id="@+id/tv_timer_value"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/btn_pause"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="37dp"
        android:textSize="40sp"
        android:text="@string/timer_val" />
 
    <Button
        android:id="@+id/btn_start"
        android:layout_width="90dp"
        android:layout_height="45dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="38dp"
        android:text="@string/btn_start_label" />
 
    <Button
        android:id="@+id/btn_pause"
        android:layout_width="90dp"
        android:layout_height="45dp"
        android:layout_alignBaseline="@+id/btn_start"
        android:layout_alignBottom="@+id/btn_start"
        android:layout_alignParentRight="true"
        android:layout_marginRight="38dp"
        android:text="@string/btn_pause_label" />
 
    <Button
        android:id="@+id/btn_stop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/btn_start"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="40dp"
        android:text="@string/btn_stop_label"/>
 
</RelativeLayout>
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
17.02.2017, 18:01
Antoshkka, у меня есть пример, но fraley уже вам вариант показал. Там же показано, что надо не забывать убирать Handler при завершении работы, например, формы на экране.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.02.2017, 18:01
Помогаю со студенческими работами здесь

Android Studio не находит функцию TextView в пакете Android.Widget
Я создал новый проект в Android Studio. Android Studio не находит функцию TextView в пакете Android.Widget. Подскажите, пожалуйста, в...

Не предлагается установка Android SDK при установке Android Studio
на сайте https://developer.android.com/studio/... скачал exeшник для установки Android Studio. Скачал, запустил и в Android Studio...

Android studio, как запускать программу сразу на android смартфоне подключенному к usb?
android studio, как запускать программу сразу на android смартфоне подключенному к usb?

Ошибка в Android Studio Error:No resource identifier found for attribute 'appComponentFactory' in package 'android'
Доброго времени суток! При компиляции андроид приложении выходит данная ошибка, прошу помочь! Мне каежтся что ошибка где то здесь но я...

Android.support.v4.app.FragmentActivity не работает в Android Studio
объясните пожалуйста,как в андроид студио добавить вышеуказанную библиотеку,чтобы работало у меня вот это Активити package...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru