2016-10-19 8 views
0

私はandroid.widget.Chronometerタイマーを表示するAndroidアプリケーションを開発中です。Androidのクロノメーターは90分と表示できますか?いいえ1:30:00

これはスポーツ関連のアプリケーションなので、タイマーに90分を表示するにはタイマーが必要です(01:30:00ではなく)。

カスタムを作成する唯一の方法はChronometerですか?

+3

疑わしいソースを確認したときに発生するクロノティックイベントを処理しますjava/android/widget/Chronometer.java 90:00は有効なJava日時フォーマットではありませんので、あなたはカスタムに行く必要があります。 –

答えて

1

ブールフラグを処理するために初めてクロノメーターを起動したり、一時停止今

後にそれを再開区別コントロール

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; 
    } 
関連する問題