Java 安卓倒数毫秒
我正在尝试制作一个倒计时应用程序,其中最长时间不超过10分钟,我希望它显示为mm:ss:ms(不太确定ms是否是毫秒的术语)。这就是我这里的Java 安卓倒数毫秒,java,android,countdowntimer,date-formatting,Java,Android,Countdowntimer,Date Formatting,我正在尝试制作一个倒计时应用程序,其中最长时间不超过10分钟,我希望它显示为mm:ss:ms(不太确定ms是否是毫秒的术语)。这就是我这里的 text = (TextView) this.findViewById(R.id.counterView); new CountDownTimer(16069000, 10) { // adjust the milli seconds here public void onTick(long millisUntilF
text = (TextView) this.findViewById(R.id.counterView);
new CountDownTimer(16069000, 10) { // adjust the milli seconds here
public void onTick(long millisUntilFinished) {
text.setText(""+String.format("%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(millisUntilFinished),
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished)),
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))
));
}
public void onFinish() {
text.setText("done!");
}
}.start();
它目前是否正在显示hh:mm:ss,我试图玩它,但无法让它工作。我试图将格式设置为
%02d:%02d:%02d:%03d
但是当我试图在setText中添加毫秒部分时,我迷路了。这里显式显示了小时:分钟:秒:
text.setText(""+String.format("%02d:%02d:%02d",
TimeUnit.MILLISECONDS.toHours(millisUntilFinished),
TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millisUntilFinished)),
TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))
));
将其更改为:
long m = TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished);
long s = TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished - m*60*1000);
long ms = millisUntilFinished - m*60*1000 - s*1000;
text.setText(""+String.format("%02d:%02d:%02d",m,s,ms));
你说迷路是什么意思 如果你问毫秒部分的值是多少,就用
millisUntilFinished % 1000
这是代码
CounterClass timer = new CounterClass(150000, 1000); // set time here
timer.start();
define class here
public class CounterClass extends CountDownTimer {
public CounterClass(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
// timeTextView.setText("Completed.");
this.cancel();
finish();
}
public void onTick(long millisUntilFinished) {
long millis = millisUntilFinished;
caaryLong = millis;
String hms = String.format(
"%02d:%02d",
TimeUnit.MILLISECONDS.toMinutes(millis)
- TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS
.toHours(millis)),
TimeUnit.MILLISECONDS.toSeconds(millis)
- TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS
.toMinutes(millis)));
System.out.println(hms);
timeTextView.setText(hms);
}
}
如果您使用的是android studio,那么就有一个外部库 步骤1:内置.gradle(模块应用程序) 编译“joda时间:joda时间:2.9.1” 步骤2:在activity.xml文件中
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll_main"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/darker_gray"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:context="com.countdowntimer.MainActivity">
<TextView
android:id="@+id/tv_milliseconds"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:gravity="center"
android:text="MilliSeconds"
android:textColor="@android:color/white"
android:textSize="80sp" />
<Chronometer
android:id="@+id/chronometer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:visibility="gone" />
</LinearLayout>
步骤4:在OnChronomertickListener中
chronometer.start();
chronometer.setBase(1);
chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
setDateTime();
}
});
步骤5:创建函数
public void setDateTime() {
countDownTimer = new MalibuCountDownTimer(startTime, interval);
countDownTimer.start();
}
public class MalibuCountDownTimer extends CountDownTimer {
public MalibuCountDownTimer(long startTime, long interval) {
super(startTime, interval);
}
@Override
public void onFinish() {
}
@Override
public void onTick(long millisUntilFinished) {
tvMilliseconds.setText("" + millisUntilFinished);
}
}
实际上,我用下面的代码
text.setText(“+String.format(“%02d:%02d:%03d”)完成了它,
TimeUnit.millizes.toMinutes(millisuntiltfinished)-TimeUnit.HOURS.toMinutes(TimeUnit.millizes.toHours(millisuntiltfinished)),
TimeUnit.millizes.toSeconds(millisuntiltfinished)-TimeUnit.MINUTES.toSeconds(TimeUnit.millizes.toMinutes(millisuntiltfinished)),
TimeUnit.millides.toMillis(millisuntiltfinished)-TimeUnit.SECONDS.toMillis(TimeUnit.millides.toSeconds(millisuntiltfinished))
));代码>
public void setDateTime() {
countDownTimer = new MalibuCountDownTimer(startTime, interval);
countDownTimer.start();
}
public class MalibuCountDownTimer extends CountDownTimer {
public MalibuCountDownTimer(long startTime, long interval) {
super(startTime, interval);
}
@Override
public void onFinish() {
}
@Override
public void onTick(long millisUntilFinished) {
tvMilliseconds.setText("" + millisUntilFinished);
}
}