如何在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秒开始。 所以任何人都可以帮助获得这个解决方案。 非常感谢你提前。

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

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

[更新]

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

你不能计时小工具倒计时。 使用下面的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(); 

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 } } }); 
 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(); } 

并称之为:

 startTimer(tvClock,sec);