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

Solutions Collecting From Web of "如何在android中反向启动天文钟?"

你不能, 天文钟小部件只计数,这是它的具体目的 。 如果你想倒计时,使用CountDownTimer (Android SDK页面包含一个TextView被更新的特定例子),或者推出你自己的解决scheme。

这些类是简单的包装,以节省您的一些打字。 如果他们不适合您的确切需求,您应该不会感到不舒服。

[更新]

正如罗纳尔多·巴伊亚(Ronaldo Bahia)在评论中所说的那样,由于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(); 

色度计只计数。 但是我们可以用这个小诀窍做倒转。

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