Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.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 - Fatal编程技术网

Java 创建相对于当前实时的倒计时计时器?

Java 创建相对于当前实时的倒计时计时器?,java,android,Java,Android,我正在尝试创建一个倒计时,显示一天中的当前剩余时间,如下所示是布局,因此有3个文本视图ID,分别为天、小时、分钟 如何获取当前剩余时间并在textview中显示它们?但也考虑到计时器在一天中任意时间的启动时间,因此24小时的启动时间可以从午夜开始,因此上午10点的计时器运行时间将显示剩余14小时,或者24小时的时间从早上6点开始,因此上午10点的计时器将显示剩余18小时 如果有人知道如何做到这一切,那么让它从午夜开始,然后在代码中添加3个小时会更容易吗 @Override protected

我正在尝试创建一个倒计时,显示一天中的当前剩余时间,如下所示是布局,因此有3个文本视图ID,分别为天、小时、分钟

如何获取当前剩余时间并在textview中显示它们?但也考虑到计时器在一天中任意时间的启动时间,因此24小时的启动时间可以从午夜开始,因此上午10点的计时器运行时间将显示剩余14小时,或者24小时的时间从早上6点开始,因此上午10点的计时器将显示剩余18小时

如果有人知道如何做到这一切,那么让它从午夜开始,然后在代码中添加3个小时会更容易吗

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    int timeinminutes = 1;

    sSlUp = findViewById(R.id.redtimeerview);
    //final TextView hours = (TextView)findViewById(R.id.hours);

    countDownTimer = new CountDownTimer(timeinminutes * 60000, 1000) {
        TextView countdownText = findViewById(R.id.countdown_text);
        public void onTick(long millisUntilFinished) {
            long scnds = 1;
            scnds = (millisUntilFinished / 1000);
            countdownText.setText("" + scnds);
        }

        public void onFinish() {
            countDownTimer.start();
        }
    }.start();


    init();
    progressBar.setVisibility(View.VISIBLE);

    mTextureView = (TextureView) findViewById(R.id.previewCam);
    mBtLaunchActivity = (Button) findViewById(R.id.bt_launch_activity);
    TextView textView = (TextView) findViewById(R.id.currentDate);
    setDate(textView);

    mBtLaunchActivity.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            launchActivity();
        }
    });

根据要求,这里是一个尝试。请注意,这个答案还没有经过测试

时间
无关的所有数据都已删除

int timeInMinutes = 1;

    countDownTimer = new CountDownTimer(timeInMinutes * 60000, 1000) {

        public void onTick(long millisUntilFinished) {
            Time time = new Time(millisUntilFinished);

            final int hours = time.getHours();
            final int min = time.getMinutes();
            final int scnds = time.getSeconds();

            countdownText.setText("" + scnds);
        }

        public void onFinish() {
            // Everytime the countDown stops restart it?
            //countDownTimer.start();
        }
    }.start();
相关链接:


    • 哦,谢谢!!我相信这让我走上了正确的道路,但它显然并不正确,因为.getHours和.getMinutes显然是从api 14开始贬值的。我看到我可以和我们做一个比较,然后把它和时间做比较

      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          int timeinminutes = 1;
      
          countDownTimer = new CountDownTimer(timeinminutes * 60000, 1000) {
              public void onTick(long millisUntilFinished) {
      
                  Time time = new Time(millisUntilFinished);
      
                  final int hours = time.compareTo(Calendar.getInstance().getTime()); //added a compareto and set that against what the current time is
                  final int min = time.getMinutes();
                  //final int scnds = time.getSeconds();
                  long scnds = 1;
                  scnds = (millisUntilFinished / 1000);
                  countdownText.setText("" + scnds);
                  countdownHours.setText("" +hours); // sets to ID of textview
              }
      
              public void onFinish() {
                  countDownTimer.start();
              }
          }.start();
      
      当我测试它时,它显示1小时(当前时间是22:54),所以我确信它是正确的,但我明天必须检查。但是谢谢你给我指出了正确的方向:D我现在需要做的就是找出如何抵消小时数,所以现在应该是4小时


      非常感谢

      在网上搜索了很多信息后,我无法获得任何内置功能。也许有任何函数,但对我来说,我用这样的代码,它真的为我工作。只需复制粘贴它并根据您的文本视图设置timerTV

        var cT: CountDownTimer? = null
      
        fun timer() {
          val calendar = Calendar.getInstance()
          calendar.time
          Log.d("Current time: ", calendar.time.toString())
      
          val hourCurrent = calendar.get(Calendar.HOUR)
          val minutCurrent = calendar.get(Calendar.MINUTE)
          val secondCurrent = calendar.get(Calendar.SECOND)
          
          var hourSub = 24 - hourCurrent
          var minSub = 60 - minutCurrent
          var secSub = 60 - secondCurrent
      
      
          cT = object : CountDownTimer(1000, 1000) {
              override fun onTick(millisUntilFinished: Long) {
      
                  timerTV.setText("$hourSub:$minSub:$secSub")
      
              }
      
              override fun onFinish() {
                  timer()
              }
          }
          cT?.start()
      }
      
      override fun onDestroy() {
          super.onDestroy()
          cT?.cancel()
      }
      

      嘿,马克。首先阅读
      时间
      程序包文档。顺便说一下,这个问题很难理解。你可能想把它重写一下。如果它现在更有意义的话,你想把它整理一下吗?是的。你能提供一些你必须要从某个地方开始的代码吗?在我认为有帮助的地方添加了一些代码。我猜是在倒计时之后。我知道如何显示当前时间没有问题,但我需要获取剩余时间,因为我没有弄清楚我搜索了什么,但很多结果似乎是距离设定日期(如圣诞节或活动)还有几天/时间,很高兴我能帮助您。很抱歉给您指出一个不推荐使用的API,我的java有点过时:P