Samstag, 16. November 2013

Android: Eine erste App erstellen

Heute geht es um die Erstellung einer ersten Android App mittels Xamarin.
Dazu öffnen wir das Xamarin Studio und klicken auf Datei - Neue Projektmappe - C# - Android Application.
Was zum Beispiel bei Windows Forms Anwendungen die Formulare sind, sind bei Android Activities, welche ein Fenster der Anwendung repräsentieren. Deswegen ist für uns die Datei "MainActivity.cs" wichtig, welche den Code für das Hauptfenster (und bisher einzige) der Anwendung enthält.
Wir sehen, dass die Activity wie in Windows Forms Anwendungen durch eine Klasse (MainActivity) dargestellt wird. Nach Erstellen des Projekts enthält diese bereits die Funktion OnCreate(). Diese wird aufgerufen, wenn die App gestartet wird. Zu Demozwecken ist die Funktion bereits mit Code gefüllt, den wir aber löschen, bis auf die erste Zeile (base.OnCreate (bundle);).
Wir möchten nun eine einfache Anwendung mit einem Textfeld und einem Button erstellen.
Dazu müssen wir zuerst ein Layout anlegen, um festzulegen, wie die Steuerelemente auf dem Fenster angeordnet werden sollen. Wir nehmen hier ein LinearLayout, bei diesem Layout werden die Steuerelemente einfach nebeneinander oder untereinander angeordnet:

var Layout = new LinearLayout (this);
Layout.Orientation = Orientation.Vertical;

Ein Layout sowie Steuerelemente erwarten im Konstruktor einen sogenannten Kontext, hier übergeben wir this stellvertretend für die aktuelle Activity.
Nun legen wir die Steuerelemente per Code an, ein Label heißt hier Textview:

var TextView1 = new TextView (this);
TextView1.Text = "Hello Android";
Layout.AddView (TextView1);

Wie ihr sehen könnt, fügen wir in der letzten Zeile das Steuerelement dem Layout hinzu.
Das Hinzufügen das Buttons läuft analog ab, nur dass wir mit einer anonymen Methode eine Ereignisbehandlung für das Click Ereignis einrichten:

var Button1 = new Button (this);
Button1.Text = "Click me";
Button1.Click += delegate {
     TextView1.Text = "Button clicked";
};
Layout.AddView (Button1);

Am Ende müssen wir der Activity nur noch sagen, welches Layout sie verwenden soll:

SetContentView (Layout);

Und damit ist die App bereit zur Ausführung. Noch einmal der komplette Code:

using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;

namespace FirstApplication
{
     [Activity (Label = "FirstApplication", MainLauncher = true)]
     public class MainActivity : Activity
     {
          protected override void OnCreate (Bundle bundle)
          {
               base.OnCreate (bundle);

               var Layout = new LinearLayout (this);
               Layout.Orientation = Orientation.Vertical;

               var TextView1 = new TextView (this);
               TextView1.Text = "Hello Android";
               Layout.AddView (TextView1);

               var Button1 = new Button (this);
               Button1.Text = "Click me";
               Button1.Click += delegate {
                    TextView1.Text = "Button clicked";
               };
               Layout.AddView (Button1);

               SetContentView (Layout);
          }
     }
}

Starten lässt sich die App dann per Ausführen - (Ohne) Debugger starten. Dazu muss entweder ein angeschlossenes Handy oder ein Emulator ausgewählt werden. Ich habe keine Emulatoren eingerichtet, sondern teste immer auf meinem Handy. Xamarin lädt die App dann aufs Handy, wo sie automatisch ausgeführt wird.
Um die App "per Hand" auf ein Handy zu kopieren, muss sie als Release Version kompiliert werden (Projekt - Aktive Konfiguration - Release), dann kann die Datei "AppName.AppName-Signed.apk" aus dem Release Ordner ins gewünschte Verzeichnis kopiert werden. Android führt nämlich nur signierte Anwendungen aus, was von Xamarin in der "Signed" Datei schon vorgenommen wurde. Falls die App aber im weiteren Kreis veröffentlicht werden soll (z.B. auf Google Play), sollte (muss) sie aber persönlich signiert werden.

Kommentare:

  1. Hallo,

    ich verstehe nicht wie du es schaffst, das Project als .apk zu erstellen, ich habe genau deine Oberfläche nachgebaut.
    Sobald ich auf das Projekt gehe und rechtsklick drücke und "Neu erstellen" auswähle, kommt ein Fenster: "Using Xamarin.Android with Visual Studio reguires Business Edition or higher", wenn ich dann auswähle "Continue using Starter Edition in Xamarin Studio" passiert nichts, das Fenster schließt sich, aber ich habe keine APK sonst noch irgendwas :(

    Was mache ich falsch?
    Ich arbeite unter Visual Studio 2010

    LG
    Hans

    ps.: Wenn ich sogar oben auf Debuggen > Starten ohne Debugging mache, kommt das selbe Fenster.

    AntwortenLöschen
    Antworten
    1. Du musst das ganze unter Xamarin Studio entwickeln und nicht unter Visual Studio 2010 ;)

      Dort kannst du dann auch neben Release (.apk) auch ein Debug mit einem Emulator durchführen ;)

      LG
      Achim

      Löschen
  2. Der Kommentar wurde von einem Blog-Administrator entfernt.

    AntwortenLöschen