【问题标题】:How to store paused chronometer time and display it another view如何存储暂停的计时器时间并在另一个视图中显示
【发布时间】:2019-07-04 14:30:24
【问题描述】:

我已将我的计时器设置为在需要时启动、在需要时暂停并在满足条件时重置。很棒,但不是很完美。我希望能够在满足条件时存储计时器显示的时间,例如“01.12”,然后在 TextView 中显示该时间。

目标是显示完成游戏所用的时间,并将其显示在我的 LinearLayout 中(游戏结束后,在重置游戏之前弹出)。

我尝试将时间存储为 long 和 double,但我运气不佳,因为我不知道如何真正做到这一点。以下是满足我想要满足的条件时屏幕显示的内容。

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() (?)

感谢所有帮助。

【问题讨论】:

    标签: java android chronometer


    【解决方案1】:

    您可以使用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有更多关于格式化的信息

    【讨论】:

    • 完美、简单、方便。非常感谢
    猜你喜欢
    • 1970-01-01
    • 2017-02-26
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 2014-04-17
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    相关资源
    最近更新 更多