Countdown-timer (HH:MM:SS-format in Android
Ich versuche mich zu entwickeln, einen countdown-timer in android.
In diesem Beispiel gehe ich in eine Anzahl von Minuten als parameter, dargestellt in einem countdown-timer.
Das problem ist, dass wenn ich die Eingabe von Minuten, zum Beispiel 65,
dann wird der Zähler 65:00 Uhr. Ich möchte den counter auf Karte 1:05:00
also in HH:MM:SS-format.
public class MainActivity extends Activity implements OnClickListener {
private Button buttonStartTime, buttonStopTime;
private EditText edtTimerValue;
private TextView textViewShowTime; //will show the time
private CountDownTimer countDownTimer; //built in android class
//CountDownTimer
private long totalTimeCountInMilliseconds; //total count down time in
//milliseconds
private long timeBlinkInMilliseconds; //start time of start blinking
private boolean blink; //controls the blinking .. on and off
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
buttonStartTime = (Button) findViewById(R.id.btnStartTime);
buttonStopTime = (Button) findViewById(R.id.btnStopTime);
textViewShowTime = (TextView) findViewById(R.id.tvTimeCount);
edtTimerValue = (EditText) findViewById(R.id.edtTimerValue);
buttonStartTime.setOnClickListener(this);
buttonStopTime.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.btnStartTime) {
textViewShowTime.setTextAppearance(getApplicationContext(),
R.style.normalText);
setTimer();
buttonStopTime.setVisibility(View.VISIBLE);
buttonStartTime.setVisibility(View.GONE);
edtTimerValue.setVisibility(View.GONE);
edtTimerValue.setText("");
startTimer();
} else if (v.getId() == R.id.btnStopTime) {
countDownTimer.cancel();
buttonStartTime.setVisibility(View.VISIBLE);
buttonStopTime.setVisibility(View.GONE);
edtTimerValue.setVisibility(View.VISIBLE);
}
}
private void setTimer() {
int time = 0;
if (!edtTimerValue.getText().toString().equals("")) {
time = Integer.parseInt(edtTimerValue.getText().toString());
} else
Toast.makeText(MainActivity.this, "Please Enter Minutes...",
Toast.LENGTH_LONG).show();
totalTimeCountInMilliseconds = 60 * time * 1000;
timeBlinkInMilliseconds = 30 * 1000;
}
private void startTimer() {
countDownTimer = new CountDownTimer(totalTimeCountInMilliseconds, 500) {
//500 means, onTick function will be called at every 500
//milliseconds
@Override
public void onTick(long leftTimeInMilliseconds) {
long seconds = leftTimeInMilliseconds / 1000;
if (leftTimeInMilliseconds < timeBlinkInMilliseconds) {
textViewShowTime.setTextAppearance(getApplicationContext(),
R.style.blinkText);
//change the style of the textview .. giving a red
//alert style
if (blink) {
textViewShowTime.setVisibility(View.VISIBLE);
//if blink is true, textview will be visible
} else {
textViewShowTime.setVisibility(View.INVISIBLE);
}
blink = !blink; //toggle the value of blink
}
textViewShowTime.setText(String.format("%02d", seconds / 60)
+ ":" + String.format("%02d", seconds % 60));
//format the textview to show the easily readable format
}
@Override
public void onFinish() {
//this function will be called when the timecount is finished
textViewShowTime.setText("Time up!");
textViewShowTime.setVisibility(View.VISIBLE);
buttonStartTime.setVisibility(View.VISIBLE);
buttonStopTime.setVisibility(View.GONE);
edtTimerValue.setVisibility(View.VISIBLE);
}
}.start();
}
}
InformationsquelleAutor der Frage Android is everything for me | 2013-03-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bin ich unter den unten angegebenen code zu konvertieren Dauer in
seconds
formatHH:MM:SS
.Können Sie leicht anpassen, diese Eingaben zu übernehmen, in
minutes
aber dann die Ausgabe in das format derHH:MM:00
da Sie nicht haben, Sekunden, z.B.:InformationsquelleAutor der Antwort iTech