Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
Antoshkka
0 / 0 / 0
Регистрация: 30.10.2013
Сообщений: 25
1

Таймер Android Studio

13.02.2017, 17:34. Просмотров 3527. Ответов 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
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2017, 17:34
Ответы с готовыми решениями:

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

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

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

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

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

9
ExFau$t
966 / 765 / 229
Регистрация: 08.05.2012
Сообщений: 3,665
13.02.2017, 18:01 2
Почему бы вместо этого:
Java
1
countDownTimer.start();
не создать новый таймер с временем окончания, равным тому, что там в эдиттексте введено минус то, что прошло уже в первом таймере?
0
Antoshkka
0 / 0 / 0
Регистрация: 30.10.2013
Сообщений: 25
13.02.2017, 18:08  [ТС] 3
А можно это в коде написать?
0
ExFau$t
966 / 765 / 229
Регистрация: 08.05.2012
Сообщений: 3,665
13.02.2017, 18:38 4
Можно.
0
13.02.2017, 18:38
Antoshkka
0 / 0 / 0
Регистрация: 30.10.2013
Сообщений: 25
13.02.2017, 20:16  [ТС] 5
Как? Напишите пожалуйста код, как это будет выглядеть?
0
ExFau$t
966 / 765 / 229
Регистрация: 08.05.2012
Сообщений: 3,665
13.02.2017, 21:14 6
Код таймера у тебя уже есть, только вместо этого:
Java
1
new CountDownTimer(seconds * 1000, 1000)
будет что-то такое, если я правильно разобрал:
Java
1
new CountDownTimer((seconds-currentCount)  * 1000, 1000)
Добавлено через 2 минуты
только в текствью к текущему значению надо прибавлять предыдущее значение (currentCount).
0
CoolMind
424 / 405 / 67
Регистрация: 06.10.2012
Сообщений: 1,738
14.02.2017, 13:49 7
Antoshkka, недавно решал подобную задачу. CountDownTimer - ерунда на один раз. Требует создания нового объекта каждый раз. Лучше решать задачу через Handler и Runnable. Там можно делать возобновление, рестарт таймера.
0
Antoshkka
0 / 0 / 0
Регистрация: 30.10.2013
Сообщений: 25
15.02.2017, 14:27  [ТС] 8
CoolMind, у вас есть пример предложенного решения? Можете скинуть?
0
fraley
110 / 110 / 43
Регистрация: 24.05.2015
Сообщений: 329
15.02.2017, 15:52 9
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
CoolMind
424 / 405 / 67
Регистрация: 06.10.2012
Сообщений: 1,738
17.02.2017, 18:01 10
Antoshkka, у меня есть пример, но fraley уже вам вариант показал. Там же показано, что надо не забывать убирать Handler при завершении работы, например, формы на экране.
0
17.02.2017, 18:01
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.02.2017, 18:01

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


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

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

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