Как сохранить время приостановленного хронометра и отобразить его в другом виде - PullRequest
1 голос
/ 04 июля 2019

Я настроил свой хронометр на запуск при необходимости, на паузу при необходимости и на сброс при выполнении условия.Отлично, но не совсем идеально.Я хочу сохранить время, которое показывает хронометр, скажем, «01.12», когда условие выполнено, а затем отобразить это время в TextView.

Цель состоит в том, чтобы показать, сколько времени потребовалось, чтобы закончить игру, и отобразить это в моем LinearLayout (которое появляется после завершения игры, до сброса игры).

IЯ пытался хранить время как длинный и двойной, но мне не очень повезло, потому что я не знаю, как на самом деле это сделать.Ниже показано, что мой экран показывает, когда выполняется условие, которое я хочу выполнить.

for (int[] winningPosition : winningPositions) {

                if (gameState[winningPosition[0]] == gameState[winningPosition[1]] &&
                        gameState[winningPosition[1]] == gameState[winningPosition[2]] &&
                        gameState[winningPosition[0]] != 2) {

                    if(running) {
                        chronometer.stop();
                        pauseOffSet = SystemClock.elapsedRealtime() - chronometer.getBase();
                        running = false;
                    }
                    // Someone has won!

                    String winner = "Red";

                    //prints a 0 or 1 depending on who has won
                    if (gameState[winningPosition[0]] == 0) {

                        chronometer.stop();

                        winner = "Yellow";

                    }

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

                    winnerMessage.setText(winner + " has won!");

                    LinearLayout layout = findViewById(R.id.playAgainLayout);
                    Animation slideUp = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_up);

                    if(layout.getVisibility()==View.INVISIBLE){

                        layout.startAnimation(slideUp);
                        layout.setVisibility(View.VISIBLE);
                    }
                }
            }

Ожидаемый результат - поместить приостановленное время в TextView, как, например,

TextView pausedTime = findViewById(R.id.pausedTimeTV);

pausedTime.chronoTime () (?)

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 04 июля 2019

Вы можете использовать SimpleDateFormat, чтобы упорядочить время в нужном формате.

if(isRunning){
    chronometer.stop();

    long stoppedTime = SystemClock.elapsedRealtime() - chronometer.getBase();

    // Create the desired format
    SimpleDateFormat formatter = new SimpleDateFormat("mm:ss", Locale.getDefault());

    myTextView.setText(formatter.format(stoppedTime)); // Set the formatted time in the textview
}

Подробнее о форматировании можно узнать по адресу https://developer.android.com/reference/java/text/SimpleDateFormat

...