Java Android游戏,仅显示游戏UI HUD中花费的时间的两位小数(仅数百秒)
我正在编写一个简单的Android游戏,我希望我的游戏UI HUD只显示花费的时间、经过的时间和类似的时间的两位小数(即仅数百秒)。我的代码示例如下:Java Android游戏,仅显示游戏UI HUD中花费的时间的两位小数(仅数百秒),java,android,game-development,time-format,Java,Android,Game Development,Time Format,我正在编写一个简单的Android游戏,我希望我的游戏UI HUD只显示花费的时间、经过的时间和类似的时间的两位小数(即仅数百秒)。我的代码示例如下: canvas.drawText("Fastest: " + formatTime(fastestTime) + " S", 10, 20, paint); formatTime以毫秒为单位返回时间。(即54.335秒)。这对我的需要没用。我尝试了DecimalFormat,正如之前在其他问题中所建议的那样,但没有成功。我怀疑问题出在canvas
canvas.drawText("Fastest: " + formatTime(fastestTime) + " S", 10, 20, paint);
formatTime以毫秒为单位返回时间。(即54.335秒)。这对我的需要没用。我尝试了DecimalFormat,正如之前在其他问题中所建议的那样,但没有成功。我怀疑问题出在canvas.drawText而不是System.out.println()
非常感谢您的帮助 我想提出两种不同的方法来实现您的目标: 1。drawText() 查看它的文档,似乎有一个方法,它还接受要绘制的字符串的第一个和最后一个索引 drawText(字符序列文本、整数开始、整数结束、浮点x、浮点y、绘制) 绘制由开始/结束指定的指定范围的文本及其 指定油漆中(x,y)处的原点 我建议将您的代码更改为:
canvas.drawText("Fastest: " + formatTime(fastestTime) + " S", 0, 7, 10, 20, paint);
起点:0,
结束:7(因为“54.33 S”也包括圆点)
一个可能的问题是秒数是否小于10或大于100(这会影响字符串的长度,从而影响结束索引)
String time = formatTime(fastestTime);
int endIndex = time.indexOf('.') + 5;
canvas.drawText("Fastest: " + formatTime(fastestTime) + " S", 0, endIndex, 10, 20, paint);
2。裁剪字符串
如果我的第一个解决方案不起作用(我没有尝试过),您可以简单地将字符串裁剪到毫秒,然后绘制整个字符串
我假设格式化时间返回一个字符串(如果没有,则将其转换为字符串并继续)
我想提出两种不同的方法来实现您的目标: 1。drawText() 查看它的文档,似乎有一个方法,它还接受要绘制的字符串的第一个和最后一个索引 drawText(字符序列文本、整数开始、整数结束、浮点x、浮点y、绘制) 绘制由开始/结束指定的指定范围的文本及其 指定油漆中(x,y)处的原点 我建议将您的代码更改为:
canvas.drawText("Fastest: " + formatTime(fastestTime) + " S", 0, 7, 10, 20, paint);
起点:0,
结束:7(因为“54.33 S”也包括圆点)
一个可能的问题是秒数是否小于10或大于100(这会影响字符串的长度,从而影响结束索引)
String time = formatTime(fastestTime);
int endIndex = time.indexOf('.') + 5;
canvas.drawText("Fastest: " + formatTime(fastestTime) + " S", 0, endIndex, 10, 20, paint);
2。裁剪字符串
如果我的第一个解决方案不起作用(我没有尝试过),您可以简单地将字符串裁剪到毫秒,然后绘制整个字符串
我假设格式化时间返回一个字符串(如果没有,则将其转换为字符串并继续)
formatTime
函数做什么?我想您实际上需要的是一个适当的SimpleDateFormat
,而不是DecimalFormat
。formatTime
函数做什么?我想你需要的其实是一个适当的SimpleDateFormat
,而不是DecimalFormat
。首先,谢谢。然后,我尝试了一下,它与第二个建议完美结合。第一个建议去掉了“S”。我改变了建议1。要添加5的偏移量-毫秒+S。很好,我使用建议2,因为它工作得很好。首先,谢谢。然后,我尝试了一下,它与第二个建议完美结合。第一个建议去掉了“S”。我改变了建议1。为了增加5毫秒+S的偏移量,我使用建议2,因为它工作得很好。