Установить таймер автоматически увеличить

Я хочу попросить логику реализовать часы таймера в следующем формате: «00:01 -> 00:02 -> 00:03 -> 00:04 ... -> 00:59 -> 01:00». Он увеличивается каждую секунду после автоматического обновления TextView. Какие-либо предложения?

Используйте Timer или CountDownTimer.

ADM 15.03.2018 03:36
0
1
47
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Что вы пробовали до сих пор? Никогда не задавайте вопросов в таком формате. В любом случае,

Добавьте приведенный ниже код в свой файл xml:

<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:tools = "http://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:background = "#000000"
    android:layout_height = "match_parent" >

    <TextView
        android:id = "@+id/timerValue"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:layout_above = "@+id/pauseButton"
        android:layout_centerHorizontal = "true"
        android:layout_marginBottom = "37dp"
        android:textSize = "40sp"
        android:textColor = "#ffffff"
        android:text = "@string/timerVal" />

    <Button
        android:id = "@+id/startButton"
        android:layout_width = "90dp"
        android:layout_height = "45dp"
        android:layout_alignParentLeft = "true"
        android:layout_centerVertical = "true"
        android:layout_marginLeft = "38dp"
        android:text = "@string/startButtonLabel" />

    <Button
        android:id = "@+id/pauseButton"
        android:layout_width = "90dp"
        android:layout_height = "45dp"
        android:layout_alignBaseline = "@+id/startButton"
        android:layout_alignBottom = "@+id/startButton"
        android:layout_alignParentRight = "true"
        android:layout_marginRight = "38dp"
        android:text = "@string/pauseButtonLabel" />

</RelativeLayout>

Добавьте ниже Java-код в MainActivity.java или другой файл Java Class:

private Button startButton;
    private Button pauseButton;

    private TextView timerValue;

    private long startTime = 0L;

    private Handler customHandler = new Handler();

    long timeInMilliseconds = 0L;
    long timeSwapBuff = 0L;
    long updatedTime = 0L;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        timerValue = (TextView) findViewById(R.id.timerValue);

        startButton = (Button) findViewById(R.id.startButton);

        startButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {
                startTime = SystemClock.uptimeMillis();
                customHandler.postDelayed(updateTimerThread, 0);

            }
        });

        pauseButton = (Button) findViewById(R.id.pauseButton);

        pauseButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {

                timeSwapBuff += timeInMilliseconds;
                customHandler.removeCallbacks(updateTimerThread);

            }
        });

    }

    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);
        }

    };

Настройте логику таймера в соответствии с вашими требованиями. Надеюсь, это будет полезно для вас.

Спасибо, это точный ответ, который я ищу.

Krot 15.03.2018 04:02

Добро пожаловать . Удачного кодирования.

Piash Sarker 15.03.2018 04:03
  Thread counttime = new Thread() {

  @Override
  public void run() {
    try {
      while (!isInterrupted()) {
        Thread.sleep(1000);
        runOnUiThread(new Runnable() {
          @Override
          public void run() {
            //update your textview here
          }
        });
      }
    } catch (InterruptedException e) {
    }
  }
};

counttime.start();

вы можете настроить время сна, изменяя значение

Thread.sleep(1000);

1000 миллисекунд - 1 секунда

для более подробной информации обратитесь к официальной документации - https://developer.android.com/reference/java/lang/Thread.html

Другие вопросы по теме