0
私はandroid.widget.Chronometer
タイマーを表示するAndroidアプリケーションを開発中です。Androidのクロノメーターは90分と表示できますか?いいえ1:30:00
これはスポーツ関連のアプリケーションなので、タイマーに90分を表示するにはタイマーが必要です(01:30:00ではなく)。
カスタムを作成する唯一の方法はChronometer
ですか?
私はandroid.widget.Chronometer
タイマーを表示するAndroidアプリケーションを開発中です。Androidのクロノメーターは90分と表示できますか?いいえ1:30:00
これはスポーツ関連のアプリケーションなので、タイマーに90分を表示するにはタイマーが必要です(01:30:00ではなく)。
カスタムを作成する唯一の方法はChronometer
ですか?
ブールフラグを処理するために初めてクロノメーターを起動したり、一時停止今
後にそれを再開区別コントロール
Chronometer chrono;
Button btnStart;
Button btnStop;
TextView txt;
そして、いくつかの変数
long elapsedTime=0;
String currentTime="";
long startTime=SystemClock.elapsedRealtime();
Boolean resume=false;
のインスタンスを定義します。各ボタンのクリックイベント
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
chrono=(Chronometer)findViewById(R.id.chrono);
btnStart=(Button)findViewById(R.id.btnStart);
btnStop=(Button)findViewById(R.id.btnStop);
btnReset=(Button)findViewById(R.id.btnReset);
txt=(TextView)findViewById(R.id.txt);
public void onClick(View v) {
// TODO Auto-generated method stub
switch(v.getId())
{
case R.id.btnStart:
btnStart.setEnabled(false);
btnStop.setEnabled(true);
if(!resume)
{
chrono.setBase(SystemClock.elapsedRealtime());
chrono.start();
}
else
{
chrono.start();
}
break;
case R.id.btnStop:
btnStart.setEnabled(true);
btnStop.setEnabled(false);
chrono.stop();
chrono.setText(currentTime);
resume=true;
btnStart.setText("Resume");
break;
case R.id.btnReset:
chrono.stop();
chrono.setText("00:00");
resume=false;
btnStop.setEnabled(false);
break;
}
}
chrono.setOnChronometerTickListener(new OnChronometerTickListener()
{
public void onChronometerTick(Chronometer arg0) {
// TODO Auto-generated method stub
if(!resume)
{
long minutes=((SystemClock.elapsedRealtime()-chrono.getBase())/1000)/60;
long seconds=((SystemClock.elapsedRealtime()-chrono.getBase())/1000)%60;
currentTime=minutes+":"+seconds;
arg0.setText(currentTime);
elapsedTime=SystemClock.elapsedRealtime();
}
else
{
long minutes=((elapsedTime-chrono.getBase())/1000)/60;
long seconds=((elapsedTime-chrono.getBase())/1000)%60;
currentTime=minutes+":"+seconds;
arg0.setText(currentTime);
elapsedTime=elapsedTime+1000;
}
https://android.googlesource.com/platform/frameworks/base/+/master/core/:
onChronometerTick方法は毎秒
chrono.setOnChronometerTickListener(new OnChronometerTickListener()
{
public void onChronometerTick(Chronometer arg0) {
// TODO Auto-generated method stub
if(!resume)
{
long minutes=((SystemClock.elapsedRealtime()-chrono.getBase())/1000)/60;
long seconds=((SystemClock.elapsedRealtime()-chrono.getBase())/1000)%60;
currentTime=minutes+":"+seconds;
arg0.setText(currentTime);
elapsedTime=SystemClock.elapsedRealtime();
}
else
{
long minutes=((elapsedTime-chrono.getBase())/1000)/60;
long seconds=((elapsedTime-chrono.getBase())/1000)%60;
currentTime=minutes+":"+seconds;
arg0.setText(currentTime);
elapsedTime=elapsedTime+1000;
}
疑わしいソースを確認したときに発生するクロノティックイベントを処理しますjava/android/widget/Chronometer.java 90:00は有効なJava日時フォーマットではありませんので、あなたはカスタムに行く必要があります。 –