14 Feb

Wie du in einer App die aktuelle Zeit ausgeben kannst (Android App Tutorial)

In diesem Android Studio Tutorial zeige ich, wie du die aktuelle Zeit in einer App anzeigen kannst. Der Einfachheit halber wieder nach dem Klick auf einen Button.

Wie du in einer App die aktuelle Zeit ausgeben kannst

Grundsätzliches zur App

Bei dieser App (genannt AktuelleZeit) habe ich mich wieder für API 16 (Android 4.1, Jelly Bean) und eine „Empty Activity“ entschieden.

Erneut ist der Aufbau simpel und soll nur die eine Funktion (aktuelle Zeit nach Buttonklick) zeigen. Das Design der App besteht lediglich aus zwei TextViews und einem Button. Ein TextView ist bereits von Anfang an sichtbar. Erst durch Drücken des Buttons wird die Zeit im zweiten TextView angezeigt. Der Aufbau dieses Tutorials und der App orientiert sich stark an dem bereits geposteten Tutorial zum Anzeigen des Datums. Die Unterschiede sind nicht groß.

 

Die activity_main.xml

Wir verwenden wieder ein lineares Layout mit vertikaler Ausrichtung. Dort hinein setzen wir zuerst ein TextView.

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Welche Uhrzeit haben wir jetzt?"
    android:paddingLeft="20dp"
    android:paddingTop="20dp"
    android:id="@+id/textView1"/>

Die Werte von paddingLeft/paddingTop sind für ein etwas besseres Layout auf „20dp“ gesetzt. Der Text – „Welche Uhrzeit haben wir jetzt?“ – ist einfach etwas sinnvoller als kein Text. 😉 Und die ID ist „textView1“, weil wir noch ein zweites TextView verwenden werden.

Aber darum geht es ein Stück weiter unten. Denn das folgende Element ist  zunächst ein Button:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Zeit"
    android:id="@+id/button"
    android:layout_gravity="center_horizontal" />

Aus layouttechnischen Gründen ist der Button wieder horizontal zentriert.

Jetzt kommt das zweite TextView:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textView2"
    android:paddingTop="20dp"
    android:paddingLeft="20dp" />

In meinem Fall hat es die ID „textView2“, es könnte aber auch einen anderen sinnvollen Namen haben, wie zum Beispiel „hierstehtdiezeit“. 😛 Wieder 20dp Padding für Top und Left.

AktuelleZeit: 2 Textviews und 1 Button

AktuelleZeit: 2 Textviews und 1 Button

 

 

Die MainActivity.java

Wir brauchen zunächst die Variablen button und textview2.

Button button;
TextView textview2;

In der Methode onCreate ergänzen wir die folgenden drei Zeilen

textview2 = (TextView) findViewById(R.id.textView2);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(this);

und lassen dann mit Klick auf das unterschlängelte „this“ und Alt+Enter die Methode onClick durch Android Studio implementieren. In dieser neuen Methode machen wir jetzt weiter.

Wir kommen nun nämlich zur Zeit. Dafür verwenden wir die Klasse Calendar. Wir erzeugen zunächst eine Instanz und nennen sie in diesem Fall, wie beim letzten Tutorial auch, „kalender“.

Calendar kalender = Calendar.getInstance();

Würden wir jetzt Calendar direkt nach der Zeit fragen, bekämen wir folgendes ausgegeben:

Aktuelle Zeit: Ausgabe unformatiert

Aktuelle Zeit: Ausgabe unformatiert

Wir wollen aber nur die Zeit (in Stunden und Minuten) und nicht das aktuelle Datum plus Zeitzone dazu. Zumindest in diesem Fall. Deshalb benutzen wir zusätzlich die Klasse SimpleDateFormat, erzeugen ein Objekt zeitformat und lassen dieses die Ausgabe von kalender.getTime() formatieren. Schließlich wird der Text von textView2 auf diese formatierte Ausgabe gesetzt.

SimpleDateFormat zeitformat = new SimpleDateFormat("HH:mm");
textview2.setText(zeitformat.format(kalender.getTime()));

Das Format „HH:mm“ sieht folgendermaßen aus:

Aktuelle Zeit: Ausgabe im Format "HH:mm"

Aktuelle Zeit: Ausgabe im Format „HH:mm“

Zusammenfassung

Insgesamt sind das, in diesem Fall, erneut nur 6 Zeilen Code für die aktuelle Uhrzeit.

3 Zeilen am Ende von onCreate:

textview2 = (TextView) findViewById(R.id.textView2);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(this);

3 Zeilen in onClick:

Calendar kalender = Calendar.getInstance();
SimpleDateFormat zeitformat = new SimpleDateFormat("HH:mm");
textview2.setText(zeitformat.format(kalender.getTime()));

Damit ist die Abfrage der Zeit genauso simpel wie die Abfrage des Datums aus dem letzten Tutorial. Der Code ist eigentlich sogar derselbe. Die einzigen Unterschiede? Beschriftung des Buttons, Inhalt vom ersten TextView, der Name des SimpleDateFormats und die Formatierung, die wir verwenden.

Wer übrigens noch Sekunden hinzufügen möchte, verändert das SimpleDateFormat von „HH:mm“ auf „HH:mm:ss“.