【发布时间】:2012-03-26 00:19:09
【问题描述】:
我需要显示玩过数独游戏的时间,玩过的时间必须显示在屏幕上。这意味着我应该能够记录从数独活动开始到游戏结束的时间。谁能帮我在android中做到这一点。
【问题讨论】:
我需要显示玩过数独游戏的时间,玩过的时间必须显示在屏幕上。这意味着我应该能够记录从数独活动开始到游戏结束的时间。谁能帮我在android中做到这一点。
【问题讨论】:
我建议研究 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 ) 保存他们播放的毫秒数。
如有问题,请随时发表评论,希望我能帮助您。我花了一段时间才弄清楚如何做这些事情,所以如果你遇到困难,我很乐意为你指出正确的方向。
【讨论】:
每次我需要显示游戏中经过的时间时,我都会使用此代码。 首先,你有这个 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;
}
它就像一个魅力。
【讨论】: