带有H:MM:SS的天文钟 [英] Chronometer with H:MM:SS
问题描述
如何显示带有H:MM:SS的天文钟?我默认读取了MM:SS和H:MM:SS.我只发现了MM:SS.
How to display Chronometer with H:MM:SS? I read MM:SS and H:MM:SS are displaying by default.I found only for MM:SS.
这是我的带有开始和停止按钮的MM:SS代码.
Here is my code for MM:SS with start and stop button.
public class MainActivity extends AppCompatActivity {
Button start,stop;
Chronometer chrono;
long time;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
start = (Button) findViewById(R.id.start);
stop = (Button) findViewById(R.id.stop);
chrono = (Chronometer) findViewById(R.id.chronometer);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
chrono.setBase(SystemClock.elapsedRealtime());
chrono.start();
}
});
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
chrono.stop();
}
});
}
}
这是我的MainActivity的xml代码:
here is my xml code for MainActivity:
<Chronometer
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/chronometer"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Start"
android:id="@+id/start"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Stop"
android:id="@+id/stop"
android:layout_below="@+id/start"
android:layout_centerHorizontal="true" />
推荐答案
带有H:MM:SS的天文钟
Chronometer with H:MM:SS
使用 setOnChronometerTickListener将时间分为分钟,小时和秒.
Divide the time into minute , hour and second using setOnChronometerTickListener.
使用这个......
use this ......
Chronometer chrono = (Chronometer) findViewById(R.id.chronomete);
chrono.setOnChronometerTickListener(new OnChronometerTickListener(){
@Override
public void onChronometerTick(Chronometer chronometer) {
long time = SystemClock.elapsedRealtime() - chronometer.getBase();
int h = (int)(time /3600000);
int m = (int)(time - h*3600000)/60000;
int s= (int)(time - h*3600000- m*60000)/1000 ;
String t = (h < 10 ? "0"+h: h)+":"+(m < 10 ? "0"+m: m)+":"+ (s < 10 ? "0"+s: s);
chronometer.setText(t);
}
});
chrono.setBase(SystemClock.elapsedRealtime());
chrono.setText("00:00:00");
编辑
开始
全局声明一个长变量 timeWhenStopped
.现在是维护时间.
Declare globally a long variable timeWhenStopped
. It is maintain the time .
private long timeWhenStopped = 0;
启动侦听器... ,获取timeWhenStopped并从此处开始.
Start Listener... get the timeWhenStopped and start from there.
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
chrono.setBase(SystemClock.elapsedRealtime() + timeWhenStopped);
chrono.start();
}
});
停止监听器....将时间存储在timeWhenStopped并停止.
Stop Listener.... store the time in timeWhenStopped and stop.
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
timeWhenStopped = chrono.getBase() - SystemClock.elapsedRealtime();
chrono.stop();
}
});
享受编码............
enjoy coding............
这篇关于带有H:MM:SS的天文钟的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!