Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/218.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 安卓倒数毫秒_Java_Android_Countdowntimer_Date Formatting - Fatal编程技术网

Java 安卓倒数毫秒

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

我正在尝试制作一个倒计时应用程序,其中最长时间不超过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 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);
        }
    }