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秒开始。所以任何人都可以帮助获得这个解决方案。非常感谢你。
答案 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)
也可以使用setCountDown(true); https://developer.android.com/reference/android/widget/Chronometer.html
答案 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"/>