【问题标题】:display time played for sudoku in android在android中显示数独游戏的时间
【发布时间】:2012-03-26 00:19:09
【问题描述】:

我需要显示玩过数独游戏的时间,玩过的时间必须显示在屏幕上。这意味着我应该能够记录从数独活动开始到游戏结束的时间。谁能帮我在android中做到这一点。

【问题讨论】:

    标签: android stopwatch


    【解决方案1】:

    我建议研究 Handler 和 postDelayed 方法。这是秒间隔的一个很好的选择,但在我非常简短的经验中,它往往会在 25 毫秒时阻塞。 http://developer.android.com/reference/android/os/Handler.html#postDelayed%28java.lang.Runnable,%20long%29

    然后创建一个可更改时间变量的可运行对象,并使用新时间更新应用中的 TextView。它也必须被格式化。 http://developer.android.com/reference/java/lang/Runnable.html

    这应该可以帮助您掌握这个想法并提供一些示例代码:http://www.vogella.de/articles/AndroidPerformance/article.html

    要实现它,您需要一种方法来确定用户是否赢了,当他们赢了时,您需要从 Handler 中删除回调,然后您的变量中就会有总时间(使用 long ) 保存他们播放的毫秒数。

    如有问题,请随时发表评论,希望我能帮助您。我花了一段时间才弄清楚如何做这些事情,所以如果你遇到困难,我很乐意为你指出正确的方向。

    【讨论】:

    • 如果您将处理程序的间隔设置为 25 毫秒并在屏幕上打印毫秒,它大部分将以“0”结尾,在我看来这不是很酷。我更喜欢将其设置为 23 毫秒或 51 毫秒,以表示它正在积极变化......
    【解决方案2】:

    每次我需要显示游戏中经过的时间时,我都会使用此代码。 首先,你有这个 TextView 来显示你的时间,在你的 xml 中定义,没什么特别的。您的游戏活动中的代码是:

        TextView time;
    
        long countUp;
    
        public static Chronometer.OnChronometerTickListener chronListener = new Chronometer.OnChronometerTickListener() {
            String msg;
    
            @Override
            public void onChronometerTick(Chronometer ch){
                countUp = (SystemClock.elapsedRealtime() - ch.getBase()) / 1000;
                msg = showTime(countUp);
                time.setText("Time: " + msg);
            }           
        };
    
    
    //a function formatting your time in human readable format, e.g. 05:06
        public static String showTime(long countUp){
            String asText;
            if((countUp % 60) < 10){
                if((countUp / 60) < 10){
                    asText = "0" + (countUp / 60) + ":0" + (countUp % 60); 
                } else {
                    asText = (countUp / 60) + ":0" + (countUp % 60); 
                }
            } else {
                if ((countUp / 60) < 10){
                    asText = "0" + (countUp / 60) + ":" + (countUp % 60);
                } else {
                    asText = (countUp / 60) + ":" + (countUp % 60); 
                }
            }
            return asText;
        }
    

    它就像一个魅力。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多