如何在android中反向启动天文台?

时间:2013-03-21 20:05:00

标签: android

cmtr.setText(finalTime);
cmtr.setBase(SystemClock.elapsedRealtime());

timetest = SystemClock.elapsedRealtime();
Log.d("SETTIME: ", ""+timetest);
cmtr.start();

eltime = SystemClock.elapsedRealtime();
Log.d("ELapsed: ", ""+eltime);

注意:我想以相反的顺序启动我的天文台表。就像我设置天文钟10秒。现在,我想以相反的顺序从10到0秒开始。所以任何人都可以帮助获得这个解决方案。非常感谢你。

6 个答案:

答案 0 :(得分:49)

你不能,Chronometer小部件只计算,制作的特定目的。如果您想倒计时,请使用CountDownTimer(Android SDK页面包含更新TextView的特定示例),或推广您自己的解决方案。

这些类是琐碎的包装器,可以节省一些打字。如果他们不符合您的确切需求,您真的不应该感到不舒服。

<强> [更新]

正如罗纳尔多·巴伊亚在评论中所补充的那样,自从API 24以来,计时器实际上通过setCountDown方法实现了这一功能。

答案 1 :(得分:16)

你不能使用计时器小部件来减少计数。使用下面的CountDownTimer示例 在这里我的倒计时从01:45分开始1秒= 1000

 CountDownTimer cT =  new CountDownTimer(100000, 1000) {

         public void onTick(long millisUntilFinished) {


                 String v = String.format("%02d", millisUntilFinished/60000);
                 int va = (int)( (millisUntilFinished%60000)/1000);
                 textView.setText("seconds remaining: " +v+":"+String.format("%02d",va));
         }

         public void onFinish() {
             textView.setText("done!");
         }
      };
      cT.start();

答案 2 :(得分:2)

Choronometer只计数。但我们可以用这个小技巧做反向。

chrono.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
            @Override
            public void onChronometerTick(Chronometer arg0) {
                countUp = (SystemClock.elapsedRealtime() - startTime) / 1000;

                if (countUp % 2 == 0) {
                    chronoRecordingImage.setVisibility(View.VISIBLE);
                } else {
                    chronoRecordingImage.setVisibility(View.INVISIBLE);
                }
                int min = (int) (countUp/60);
                int sec = (int) (countUp%60);

                Utility.printMessage(min+":"+sec);
                int newCount = MAX_TIME - (int) countUp;  // MAIN LOGIC
                String asText = String.format("%02d",(newCount / 60)) + ":"
                        + String.format("%02d", (newCount % 60));

                chrono.setText(asText);
                if (countUp > MAX_TIME) {
                    //time complete
                }
            }
        });

答案 3 :(得分:1)

答案 4 :(得分:0)

layer_tensor = tf.gather(model.layer_tensors[model_layer], samples, axis=-1)

并称之为:

private static int sec = 60*2;  // this is for 2 for min TODO replace your sec

    public void startTimer(final TextView textView ,int sec) {

    CountDownTimer downTimer= new CountDownTimer(1000 * sec, 1000) {

        public void onTick(long millisUntilFinished) {


            String v = String.format("%02d", millisUntilFinished / 60000);
            int va = (int) ((millisUntilFinished % 60000) / 1000);
            textView.setText(v + ":" + String.format("%02d", va));
        }

        public void onFinish() {
            textView.setText("done!");
        }
    };
    downTimer.start();

}

答案 5 :(得分:0)

对于那些仍在寻找其他选项和视图的用户,建议使用Chronometer小部件并将setCountDown(布尔值)设置为true。

例如,在您的活动或片段中:

  view_timer.base = SystemClock.elapsedRealtime() + 10000    
  view_timer.start()

对于布局.xml中的小部件:

<Chronometer
            android:id="@+id/view_timer"
            android:countDown="true"
            tools:targetApi="24"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>