Ergebnis 1 bis 16 von 16
-
- 28.04.2010, 18:34
- #1
Hallo Leute
Mit dem steigenden Interesse für die Android-App Entwicklung, möchte ich es Ein- und umsteigern erleichtern, den Einstieg zu finden. Deshalb werden ich euch zeigen, wie man ein simples GUI (GRAPHICAL USER INTERFACE) und etwas Stringverarbeitung umsetzt. Wenn alles klappt sollte das Ganze dann etwa so aussehen:
Voraus gesetzt werden das Android SDK (s.http://www.pocketpc.ch/android-allge...tc-desire.html) und etwas "Programmier-Verständnis".
Inhaltsverzeichniss
Nun wollen wir gleich mal loslegen mit, wenig, aber wichtiger, Theorie zum Ablauf eines Android-Programmes. Hier eine Grafik die vereinfacht den Programmverlauf zeigt.
- Activity
- definiert eine "View", zur Anzeige auf dem Screen
- behandelt "Events" (z. B. Klick auf einen Button)
- benutzt "Intents", um andere Activities zu starten
View - eine "View" ist der sichtbare Teil der Activity
- definiert in einer XML-Layout-Datei (oder im Code)
Event - wird ausgelöst, wenn etwas geschieht (z. B ein Button geklickt wird)
- ruft eine Listener-Methode auf, sofern ein Listener definiert ist
Intent - startet eine andere Activity ("öffnet ein neues Fenster")
- kann Daten an die zu startende Activity übergeben
- kann Activities aus anderen Apps starten!
1. Neues Projekt erstellen
Um in Eclipse ein neues Projekt zu erstellen klicke in der Menüliste auf File > New > Project.... Wähle im Dioalog: Andriod > Android Project.
Es öffnet sich ein weiteres Fenster. Dieses bestimmt die Optionen zum Erstellen des Projektes. Bitte trage folgende Werte ein:- Project Name: "Hallo Android"
- Build Target: bei mir Android 2.1 (bin glücklicher HTC Desire besitzer)
- Application Name: "Hallo Sager" (dieser Text wird als Name im Menü und oben an der app angezeigt.)
- Package name: "de.test.hallo"
1.1 [Theorie] Aufbau eine Android Projektes
1.1.1 Übersicht
Pfad bzw. Datei Beschreibung src/de.test.hallo.HalloSager.java Klasse der Haupt-Activity R.java Resourcen-ID-Definitionen (wird automatisch erstellt, NICHT editieren!) /assets Ordner für Binär-Dateien (alles, was Android nicht selbst verwaltet) /res Ordner für Resource-Dateien (Bilder, Layouts, Strings, ...) /res/drawable-hdpi/icon.png Logo in hoher Auflösung (72 x 72 Pixel – 240 dpi) /res/drawable-mdpi/icon.png Logo in mittlerer Auflösung (48 x 48 Pixel – 160 dpi) /res/drawable-ldpi/icon.png Logo in niedriger Auflösung (36 x 36 Pixel – 120 dpi) /res/layout/main.xml Layout-Definition für View der Haupt-Activity /res/values/strings.xml (String-Array) "Texte" werden hier definiert AndroidManifest.xml "Metadaten"-Datei, definiert Infos wie Name, Logo (icon s.O) und Haupt-Activity default.properties Projekt-Eigenschaften
Im Allgemeinen ist es ratsam Dateien mit dem Text Editor zu öffnen, da man so dirket den Quellcode ansehen und bearbeiten kann.
Nun werde ich euch alle wichtigen Teile Etwas genauer beschreiben und Tipps geben.
1.1.2 AndroidManifest.xml
Hier der Aufbau einer Quelldatei (mit Beschreibung).
Um die App auf verschieden Displaygrössen lauffähig zu machen müssen wir zu Schluss (Zeile vor </manifest>) folgenden Code einfügen:
<supports-screens android:anyDensity="true"
android:largeScreens="true"
android:smallScreens="true" />
1.1.3 res/layout/main.xml
Quellcode:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>
Erklärung: Hier wird zuerst ein vertikales Layout erzeug. Anschliessend eine Textview (Label) mit einer Stringvariable aus dem String-Array (s.U), mit dem Namen "hello", gefüllt.
1.1.4 res/values/strings.xml
In dem Oben kurz erwähnten Stringarray werden ALLE Texte gespeichet.
In der Datei sollten 2 String definiert sein. "hello"(Bergüssungstext) und "app_name"(Name der App).
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, HalloSager!</string>
<string name="app_name">Hallo Sager</string>
</resources>
1.1.5 src/de.test.hallo.HalloSager.java
package de.test.hallo;
import android.app.Activity;
import android.os.Bundle;
public class HalloSager extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Wichtig ist die letzte Zeile.
setContentView(R.layout.main);
Diese setzt das angegebene Layout als View dieser Activity.
2. Layout definieren
Da wir nun im Layout etwas ändern möchten benötigen wir die main.xml Datei. Diese ergänzen wir um eine Textview und ein Textfeld.
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:text="@string/namen_eingeben"
/>
<EditText
android:id="@+id/name_field"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
Eclipse wird nun einen Fehler anzeigen, da wir den String "namen_eingeben" nicht definiert haben. Deshalb fügen wir folgenden Code bei Strings.xml ein:
<string name="namen_eingeben">Bitte gebe deinen Namen ein: </string>
Unter dem Namens-Texteld wollen wir zwei Buttons nebeneinander anordnen. Dazu benötigen wir ein (zusätzliches) LinearLayout. Dieses Mal allerdings mit horizontaler Orientierung. Darin Platzieren wir anschliessen die zwei Buttons :
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/hallo_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/hallo_button"
/>
<Button
android:id="@+id/guten_tag_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="@string/guten_tag_button"
/>
</LinearLayout>
Es fehlen die Texte der Buttons. Also:
<string name="hallo_button">Sag Hallo!</string>
<string name="guten_tag_button">Sag Guten Tag!</string>
3. Activity erweitern
Nun erweitern wir unsere Activity. Öffne "HalloSager.java" und ersetze den ganzen Code durch den hier.
package de.test.hallo;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class HalloSager extends Activity
implements OnClickListener {
private Button hallo_button;
private Button guten_tag_button;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
hallo_button = (Button) findViewById(R.id.hallo_button);
hallo_button.setOnClickListener(this);
guten_tag_button = (Button) findViewById(R.id.guten_tag_button);
guten_tag_button.setOnClickListener(this);
}
public void onClick(View v) {
// TODO Auto-generated method stub
}
}
Was wurde geändert?
Auf die class HalloSager wurde ein "OnClickListener" eingefügt, jeher wird benötigt um die zu prüfen, ob und welcher Button geklickt wurde. Der Listener wurde auch auf die Beide Buttons übertragen.
Füge anschliessen diesen Text in "public void onClick(View v) {}" ein.
EditText nameField = (EditText) findViewById(R.id.name_field);
String name = nameField.getText().toString();
if (name.length() == 0) {
new AlertDialog.Builder(this).setMessage(
R.string.error_kein_name).setNeutralButton(
R.string.error_ok,
null).show();
return;
}
if (v == hallo_button || v == guten_tag_button) {
int resourceId = v == hallo_button ? R.string.hallo_antwort
: R.string.guten_tag_antwort;
String antwort = getResources().getString(resourceId, name);
Toast.makeText(this, antwort, Toast.LENGTH_LONG).show();
TextView greetingField = (TextView) findViewById(R.id.antwort_feld);
greetingField.setText(antwort);
}
Folgende Strings fehlen
<string name="error_kein_name">Bitte gebe deinen Namen ein</string>
<string name="error_ok">OK</string>
<string name="hallo_antwort">Hallo %s!</string>
<string name="guten_tag_antwort">Guten Tag %s!</string>
Falls jetzt noch Fehler angezeigt werden, drücke [CTRL] + [SHIFT] + O, um die fehlenden imports anzufügen.
Um die Nachricht (Hallo/Guten Tag ...) als Text anzeigen zu lassen, muss man die erste TextView in main.xlm um dieses Attribut erweitern
android:id="@+id/antwort_feld"
Nun das das Ganze nur noch über Run > Run Android Aplication starten
FERTIG!!!
-
- 28.04.2010, 23:36
- #2
Soo endlich fertig.
Hoffe ich kann damit einigen Helfen.
Verbesserungs Vorschläge sind jederzeit willkommen. Werde das ganze Heute oder Morgen nochmal überarbeiten. Bin jetzt zu müde.
LG und Gute Nacht
SiriusA
-
Ehrenmitglied
- 29.04.2010, 06:49
- #3
Hey danke!
Schöner Beitrag, werde ihn heute abend mal ausführlicher lesen.
Gerade jetzt wo ich eh mal vielleicht überlege n kleines bisschen für Android zu entwickeln (Sehr vorsichtig ausgedrückt) freue ich mich über solche Artikel.
Hier gibt es noch einen ähnlichen. Vielleicht wollt ihr Eure Artikel ja zusammenpacken oder in den gleichen Thread, damits übersichtlicher wird.
Gruß
Rumbel
-
- 29.04.2010, 07:27
- #4
Danke für deine Antwort.
Ich habe den Thread bereits Oben verlinkt. Zusammenschliessen würde ich die Threads nicht. Denn der eine behandelt die Einrichtung des SDKs (OK das hallo wellt aber ...) und der andere die Programmierung eines ersten Apps (mit Hintergrund informatikonen).
Ein Thread = Ein Thema.
B2T:
Ist das ganze verständlich formuliert?
Hat jemand schon versucht es nachzumachen? hats geklappt? Wo steckst du fest?
-
kocht ROMs
- 29.04.2010, 09:16
- #5
Also ich würde sie auch nicht zusammen tun.
Denn dieser Thread geht schon einiges mehr in die Tiefe als das Erste How-To.
Wenn alles schlussendlich in einem Thread wäre, würde es ziemlich schnell unübersichtlich werden.
-
Mich gibt's schon länger
- 29.04.2010, 20:49
- #6
Ich habe es nicht ausprobiert, aber kann es sein, dass du die Buttons im Layout und im Code unterschiedlich referenzierst? Einmal id.hi_button, einmal id.hallo_button.
Und: Vielen Dank!
-
- 30.04.2010, 00:09
- #7
-
Bin neu hier
- 07.05.2010, 06:51
- #8
Hi,
sehr schöner Beitrag! Mir ist direkt ein bissl was mehr klar geworden, als beim durchstöbern der offiziellen Erklärungen. Gerade der Zusammenhang zwischen den xml-files und dem eigentlichen Code, den sollte man imo deutlicher hervorheben!
Zur besseren Übersichtlichkeit könnte man an den Anfang noch ein "Inhaltsverzeichnis" anlegen, damit man schonmal weiß was kommt.
kleiner Tippfehler noch in "1.1.2 AndroidManifest.xml": (Zeile vor </manifeast>)
Ansonsten wie gesagt, sehr schön! Ich hab auch schon ein paar tuts geschrieben und weiß deshalb wie schwer es ist, sowas für andere zu formulieren, was einem so im Kopf rumschwirrt
Grüße,
-
- 09.05.2010, 12:38
- #9
Danke für dein Feedback. Habe es mir zu Herzen genommen und ein paar Punkte verändert.
- Inhaltsverzeichniss mit Anker wurde eingefügt
- Rechtschreibung verbessert
Was du mit zur Erklärung, im Bezug zwischen auf xml-Dateien und der Activity, vermisst weiss ich leider nicht genau. Ich wäre sehr froh, wenn du mir das in einer PN vllt etwas genauer erklären kannst. Danke.
LG
SiriusA
-
Bin hier zuhause
- 15.05.2010, 20:16
- #10
und wie erstelle ich eine .apk aus der fertigen java datei???
wär noch intressant zu wissen.
-
- 16.05.2010, 11:00
- #11
Rechtsklick aufs Projekt -> Export -> Android und dann dem Wizard folgen.
-
Bin hier zuhause
- 16.05.2010, 16:03
- #12
ok danke hat geklappt.
hab so ne sinlose app gemacht die einen immer fragt: ''und dann?''.
wie im film: hey man wo ist mein auto.
-
- 16.05.2010, 20:24
- #13
Gern geschehen.
(Der Film ist der Hammer
-
Gehöre zum Inventar
- 19.05.2010, 12:16
- #14
hat sich erledigt
-
Bin neu hier
- 19.05.2010, 22:59
- #15
Hallo!
Ich habe dein Tutorial eben nur kurz überflogen. Aber eine Frage drängt sich mir auf. Warum implementierst du den OnClickListener in der Activity-Klasse?
Wie machst du das denn, wenn du mehr als einen Button hast? Ich verwende immer anonyme Implementationen der OnClickListener-Klasse. Ich meine, eine OnClick-Funktion pro Button wäre doch übersichtlicher, oder?
-
Bin neu hier
- 21.05.2010, 14:49
- #16
Ich kann folgendes Tutorial auch sehr empfehlen:
http://www.vogella.de/articles/Android/article.html
Ähnliche Themen
-
Erste-Hilfe-App?!?
Von Unregistriert im Forum Android AppsAntworten: 17Letzter Beitrag: 03.05.2010, 13:46 -
Erste Hilfe-App
Von Isobuster im Forum HTC HD2 ProgrammeAntworten: 4Letzter Beitrag: 24.01.2010, 14:11 -
Erste Screenshots Facebook App
Von Lucas0511 im Forum HTC HeroAntworten: 7Letzter Beitrag: 07.12.2009, 18:53 -
Erste Multitouch App für den HD2 und wie's gemacht wird!
Von juelu im Forum HTC HD2 ProgrammeAntworten: 23Letzter Beitrag: 01.12.2009, 18:48
Pixel 10 Serie mit Problemen:...