2016-10-19 15 views
0

android.widget.Chronometer 타이머를 표시하는 Android 애플리케이션을 개발 중입니다.안드로이드 크로노 미터가 90 분 90 초로 표시 될 수 없음 1:30:00

스포츠 관련 응용 프로그램이므로 90 분을 90 분으로 표시하고 01:30:00을 표시하지 않는 타이머가 필요합니다.

사용자 정의 Chronometer을 만드는 유일한 방법은 무엇입니까?

+3

의심 소스를 검사 할 때 발생 크로노 틱 이벤트를 처리 java/android/widget/Chronometer.java 90 시가 유효한 Java datetime 형식이 아니기 때문에 외양에 따라 사용자 정의해야합니다. –

답변

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