Jednym z moich problemów jest zmiana formatu chronometru w systemie Android. Mam problem z tym, że chronometr pokazuje swój czas w formacie 00:00 i chcę, żeby wszedł w formacie 00:00:00. Czy ktoś zna odpowiedź?jak zmienić format chronometru?
Odpowiedz
Pracowałem na czasomierzu, który używał tego formatu, ale był dla HH: MM: SS. Czy tego szukasz lub szukasz MM: SS: milisekundy. Możesz pracować z tym kodem i sprawić, że będzie on liczony od 0 zamiast w dół. Oto link - Formatting countdown timer with 00:00:00 not working. Displays 00:00:00 until paused then displays the time remaining a to może pomóc - Show milliseconds with Android Chronometer
Chronometry metoda setFormat służy do dodawania sformatowany tekst jak:
"Time% s od początku"
wynikające
"Czas 00:00 od rozpoczęcia"
W Chronometrze nie można wybierać pomiędzy formatami HH: MM: SS lub MM: SS.
Oznacza to, że nie ma możliwości ustawienia formatu, którego wynikiem końcowym jest "00:00:00" bez wykonywania pewnych czynności w "ChronometerTickListener", jak sugerują inne odpowiedzi. prawda? –
Miałem do czynienia z tym samym problemem. Najprostszym sposobem osiągnięcia tego celu byłoby przesłanianie updateText metodę chronometr, ale niestety jest to prywatna metoda więc zrobiłem to w ten sposób:
mChronometer.setText("00:00:00");
mChronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
CharSequence text = chronometer.getText();
if (text.length() == 5) {
chronometer.setText("00:"+text);
} else if (text.length() == 7) {
chronometer.setText("0"+text);
}
}
});
wiem, że lepiej byłoby napisać niestandardowy widget ale dla małego projektu może być odpowiedni.
Format ustawienia chronometru umożliwia sformatowanie tekstu otaczającego aktualny czas i godzinę w formacie DateUtils.formatElapsedTime.
Nadzieję, że pomaga.
Oto proste i inteligentne rozwiązanie dla formatu czasu 00:00:00 w chronometru w android
Chronometer timeElapsed = (Chronometer) findViewById(R.id.chronomete);
timeElapsed.setOnChronometerTickListener(new OnChronometerTickListener(){
@Override
public void onChronometerTick(Chronometer cArg) {
long time = SystemClock.elapsedRealtime() - cArg.getBase();
int h = (int)(time /3600000);
int m = (int)(time - h*3600000)/60000;
int s= (int)(time - h*3600000- m*60000)/1000 ;
String hh = h < 10 ? "0"+h: h+"";
String mm = m < 10 ? "0"+m: m+"";
String ss = s < 10 ? "0"+s: s+"";
cArg.setText(hh+":"+mm+":"+ss);
}
});
timeElapsed.setBase(SystemClock.elapsedRealtime());
timeElapsed.start();
Stary, naprawdę fajne rozwiązanie. Najłatwiejszy sposób, jaki kiedykolwiek widziałem;) –
dzięki za pomysł, trochę poprawiłem twój kod, by poprawić wydajność tutaj \t cArg.setText (String.format ("% 02d:% 02d:% 02d", h, m , s)); –
w jaki sposób można to zrobić, jeśli chronometr jest w widgecie (widget ekranu głównego)? – ArJ
You can use this code. Setting the format and removing it
//Removing the format (write this in oncreate)
if(mChronometerformat){
mSessionTimeChro.setOnChronometerTickListener(new OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
if (chronometer.getText().toString()
.equals("00:59:59"))
chronometer.setFormat(null);
}
});}
// Setting the format
mSessionTimeChro.setBase(SystemClock.elapsedRealtime());
if (diffHours == 0) {
mSessionTimeChro.setFormat("00:%s");
mChronometerformat = true;
}
mSessionTimeChro.start();
Dlaczego po prostu nie korzystać Date klasy ??
timeElapsed.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer cArg) {
long time = SystemClock.elapsedRealtime() - cArg.getBase();
Date date = new Date(time);
DateFormat formatter = new SimpleDateFormat("HH:mm:ss");
String dateFormatted = formatter.format(date);
cArg.setText(dateFormatted);
}
});
Proste i czyste
Klasa Chronometer oczekuje określonego wzorca w jego metodzie setText (String). Twój kod spowoduje wyjątek. –
@FranziskusKarsunke Czy sprawdziłeś ten wzór? ** Domyślnie wyświetli bieżącą wartość zegara w postaci "MM: SS" lub "H: MM: SS" lub możesz użyć setFormat (String), aby sformatować wartość timera na dowolny ciąg. ** – Marurban
Działa to, ale efektywniej jest pracować z czasem jako długim, zamiast tworzyć nowy obiekt Date i DateFormat co sekundę. – k2col
- 1. Format chronometru Android
- 2. Jak zmienić utworzony format
- 3. Winston: Jak zmienić format datownika
- 4. GlassFish 3: jak zmienić (domyślny) format rejestrowania?
- 5. Jak zmienić format daty w wyboru daty
- 6. Jak zmienić format daty w ulu?
- 7. Jak zmienić format określonych linii w RichTextBox
- 8. Jak zmienić domyślny format szablonu daty Django?
- 9. Drupal - Jak zmienić format wejściowy dla komentarzy?
- 10. Jak zmienić format daty w jqgrid
- 11. Jak zmienić format daty selektora zakresu dat?
- 12. Jak zmienić format datetime w pand
- 13. Jak zmienić format czasu kolumny w fullcalendar?
- 14. JQuery Validation i MVC 3. Jak zmienić format daty
- 15. Jak zmienić format daty przy użyciu Matplotlib w Pythonie
- 16. YII: Jak zmienić format datetime wyświetlany na View
- 17. Jak zmienić format wiadomości dziennika Pythona dla każdego rejestratora?
- 18. Jak zmienić format daty w raporcie RDLC w sieci .net?
- 19. Jak mogę zmienić format tekstu komórki Excel za pomocą C#?
- 20. Moment.js, jak zmienić format daty bez zmiany strefy czasowej?
- 21. Jak zmienić format komórki na tekst za pomocą VBA
- 22. Jak zmienić nazwę apk przy użyciu gradle like this format?
- 23. Jak zmienić format daty pliku DataBinder.Eval w asp.net?
- 24. Jak zmienić format daty na wykresie linii materiałowej google?
- 25. Jak zmienić format daty/czasu GO pakietu dziennika
- 26. Jak mogę zmienić format rejestrowania w Google AppEngine
- 27. Jak zmienić język i format daty w SQL Server?
- 28. Jak zmienić format "gq" tekstu w jednym wierszu na format akapitu w Vim
- 29. zmienić domyślny format daty w ruby na szynach?
- 30. String.Format (format, data) ignoruje format
im szuka HH: MM: SS ......... bt chronometr nie pokazuje, kiedy to w ciągu kilku sekund lub minut a 00:00: 00 format.it pokazuje tylko 00:00, kiedy odliczanie jest w sekundach. lub min. – Nikki