Herausforderungen und Möglichkeiten bei der Entwicklung von Metro Style Apps

How-to become fast and fluid (Teil 2)
Kommentare

Navigieren
Um .NET-Entwicklern das Leben zu erleichtern, ist XAML als Sprache zur Definition der Benutzeroberfläche auch in der WinRT ein fester Bestandteil, nativ in das Betriebssystem integriert und

Navigieren

Um .NET-Entwicklern das Leben zu erleichtern, ist XAML als Sprache zur Definition der Benutzeroberfläche auch in der WinRT ein fester Bestandteil, nativ in das Betriebssystem integriert und somit auch für C++-Entwickler zugänglich. Wenn Sie mit der WPF oder Silverlight vertraut sind, können Sie Ihr Wissen weiterhin nutzen: Die Klassen und deren Eigenschaften sind größtenteils gleich benannt. Die Steuerelemente wurden jedoch für Touch-Eingaben optimiert (so bekommt beispielsweise eine Textbox bei Fokuserhalt automatisch ein Icon zum Löschen des gesamten Inhalts) und teilweise mit neuer Funktionalität versehen (beispielsweise automatische Rechtschreibprüfung in allen Textfeldern). Darüber hinaus gibt es auch komplett neu entwickelte Steuerelemente, die Sie unbedingt ausprobieren sollten. Die GridView (indirekt abgeleitet von ItemsControl) stellt Elemente im Metro-typischen Design dar (meist quadratische Felder, teilweise mehrere Felder miteinander verbunden), bietet Möglichkeiten zur Gruppierung von Elementen und eignet sich auch hervorragend im Zusammenspiel mit einem der spannendsten Steuerelemente: dem JumpViewer: Bei einer großen Anzahl von Elementen werden Listen naturgemäß unübersichtlich. Im gewohnten Maus-und-Tastatur-Umfeld haben wir verschiedene Möglichkeiten, um uns innerhalb einer Liste zu bewegen: Tastenkürzel zum Springen an den Anfang und das Ende, seitenweises Blättern, Verschieben des Scroll-Balkens mit der Maus. In Touch-Umgebungen führen lange Listen meist zu hektischen Wischbewegungen, aber selten zum Erfolg. Das JumpViewer-Steuerelement bietet die Möglichkeit eines so genannten „semantischen Zooms“. Das Zueinanderbewegen zweier Finger (Geste zum Verkleinern) führt zur Anzeige einer eigenen Ansicht, die als „Vogelperspektive“ dient und das Navigieren zu bestimmten Punkten der Liste erleichtert. Beispiel gefällig? Sie haben eine Liste mit allen Ländern der Erde und möchten Italien auswählen. Statt die Liste abzutasten, verkleinern Sie sie mittels Geste, es erscheint eine Ansicht aller Anfangsbuchstaben, Sie klicken auf „I“, und Italien ist im Blickfeld (vergleichbar auch mit dem Kontakte-Hub aus Windows Phone 7).

Reagieren

Jetzt ist es uns Entwicklern endlich gelungen, die Benutzer mit schön animierten Ladebalken daran zu gewöhnen, dass manche Aktionen eben einige Sekunden dauern und unsere Anwendung während dieser Wartezeit auch auf nichts anderes reagieren möchte – und dann kommt Touch. Touch-Oberflächen müssen reaktiv sein. Wo bisher Sekunden akzeptiert wurden, sprechen wir nun von Millisekunden, bis ein Benutzer die erste sichtbare Reaktion erwartet. Bleibt diese aus, glaubt er, dass entweder die Berührung nicht fest genug war, der vermeintliche Touch-Monitor vielleicht gar keiner ist oder die Anwendung abgestürzt ist. Die Lösung für nicht reaktive Benutzeroberflächen kennen wir schon lange: asynchrones Programmieren; den UI-Thread von rechenintensiven Aufgaben befreien. Die Umsetzung war aber mühsam, denn das Registrieren von Callback-Methoden trägt nicht unbedingt zur Lesbarkeit des Quellcodes bei. Mit .NET 4.5 (also auch für die „klassische“ .NET-Entwicklung verfügbar) wird in C# und VB ein neues Schlüsselwort eingeführt, das Sie lieben werden: await. Vor den Aufruf einer asynchronen Methode geschrieben, bewirkt es, dass der Compiler den nachfolgenden Quellcode in einen Callback verschiebt. Hinter den Kulissen bleibt alles wie bisher, aber die Lesbarkeit des Programms steigt enorm. Aber Achtung: await erstellt keine Threads, es hilft nur, die Asynchronität zu verwalten. Listing 1 zeigt einen synchronen beziehungsweise asynchronen Aufruf ohne await, im Vergleich dazu sehen Sie in Listing 2 einen asynchronen Aufruf unter Verwendung von await.

Listing 1

private static void AsynchronousProgrammingBeforeAwait()
{
  // Synchroner Aufruf
  // Die Service-Methode wird synchron aufgerufen und blockiert
  MyServiceClient service = new MyServiceClient();
  var resultSync = service.GetMyData();

  // Asynchroner Aufruf
  // Die Service-Methode wird synchron aufgerufen und blockiert
  service.GetMyDataCompleted += (sender, eventArgs) =>
    {
      // Dieser Bereich wird ausgeführt, 
      // sobald die Antwort des asynchronen Aufrufs eintrifft.
      var resultAsync = eventArgs.Result;
    };
 
  // Die Service-Methode wird asynchron aufgerufen,
  // die Antwort wird über das Completed-Event bereitgestellt.
  service.GetMyDataAsync();
}  
Listing 2

private async static void AsynchronousProgrammingWithAwait()
{
  // Asynchroner Aufruf
  // Die Service-Methode wird asynchron aufgerufen
  MyServiceClient service = new MyServiceClient();
  var resultSync = await service.GetMyData();
  // Dieser Bereich wird ausgeführt, 
  // sobald die Antwort des asynchronen Aufrufs eintrifft.
}  
Interagieren

Erinnern Sie sich an die Zeiten, als Smartphones noch keine Zwischenablage kannten? Apps waren Insellösungen, eine Telefonnummer aus der einen App in die andere App zu bringen, war nur durch eine manuelle Zwischenablage in Form eines Notizblocks möglich. Und selbst seit unsere Handys dazugelernt haben, so richtig praktikabel ist die Miniaturzwischenablage auch nicht. Windows 8 Apps sollen anders sein. Als Entwickler können Sie verschiedenste „Contracts“ implementieren und dadurch mit anderen Apps interagieren beziehungsweise Ihre App noch besser in das Windows-8-Ökosystem integrieren. Einer für alle, alle für einen. So ist es beispielsweise möglich, Ihre Anwendung als Anbieter für die Suchfunktionalität unter Windows 8 zu registrieren. Sucht der Benutzer nach einem Begriff, hat er die Wahl, ob er das Betriebssystem, den Internet Explorer oder eben Ihre App mit der Suche betrauen will. Die Implementierung ist denkbar einfach: Fügen Sie einen SearchContract zu Ihrem Projekt hinzu, Sie erhalten automatisch eine Vorlage für die Ergebnisseite und eine überladene Methode in der App-Klasse namens OnSearchActivated.

Zum Austausch von Daten bietet sich der Share-Contract an. Egal, ob Sie die Quelle sind (Daten anbieten) oder das Ziel (Daten empfangen): Von einfachen Texten und Bildern bis hin zu strukturierten Datensätzen (z. B. von [5]) können Informationen zwischen Apps übermittelt werden, die keinerlei Kenntnis voneinander haben. Es bleibt spannend, wie ausgiebig die App-Entwickler dieses Feature nutzen werden. Theoretisch könnte man damit ein markiertes Zitat im Internet Explorer zur Twitter App, Bilder von der Flickr App zum Puzzlespiel oder Adressdaten von der Telefonbuch-App zur CRM App wandeln. Die klare Empfehlung lautet: Sorgen Sie dafür, dass Ihre App möglichst viele Informationen als Quelle bereitstellt, aber nur für sehr ausgewählte Formate als Zielanwendung auftritt.

Noch einen Schritt weiter als der Share-Contract geht der FilePicker-Contract. Er ermöglicht die Integration in den Standarddateiauswahldialog und gibt Ihrer App die Möglichkeit, quasi als Datenlieferant aufzutreten. Ihre App könnte beispielsweise Vorschaubilder von Produkten anzeigen: Sobald der Benutzer ein Bild ausgewählt hat, kümmern Sie sich um den Download des hochauflösenden Bildes und übergeben es an das Betriebssystem. Wenn der Benutzer in Zukunft ein Produktfoto benötigt, verwendet er bequem Ihre App zur Suche und fügt das gewünschte Bild direkt in der Ziel-App (E-Mail-Client, Bildbearbeitung, Facebook) ein, ohne lästiges manuelles Zwischenspeichern. Der Vorteil gegenüber dem Share-Contract: Dateiauswahldialoge hat so ziemlich jede Anwendung, für den Share-Contract sind Sie auf die Hilfe der Gegenseite angewiesen. Versuchen Sie in der „World of Apps“ mitzuspielen und interagieren Sie mit Windows 8 und anderen Apps. Ihre Benutzer werden es Ihnen danken.

Animieren

Die schönste App ist nutzlos, wenn sie nicht aufgerufen wird. Bisher hatten wir als Entwickler nur die Möglichkeit, unsere Anwendung mit einem prächtigen Icon beim Setup möglichst penetrant an allen Orten zu platzieren: Desktop, Schnellstartleiste, Startmenü. In Windows 8 können Sie die starren, pixeligen Icons zum Leben erwecken: Die so genannten App Tiles sollen den Benutzer einladen, die App zu starten. Zeigen Sie aktuelle oder userspezifische Inhalte an (Abb. 2), im besten Fall mit Fotos unterstützt. Natürlich können Sie auch weiterhin ein schlichtes Bild als Start-Icon wählen, aber der erste Eindruck … Sie wissen schon. Und apropos erster Eindruck: Wenn es Sinn macht, können Sie sogar bereits auf der Anmeldeseite des Benutzers Präsenz zeigen und wichtige Hinweise hinterlassen (z. B. die Anzahl der ungelesenen Nachrichten).

Abb. 2: App Tiles ermöglichen die Anzeige aktueller oder userspezifischer Inhalte
Abb. 2: App Tiles ermöglichen die Anzeige aktueller oder userspezifischer Inhalte
Resümee

Gehört unser Ururenkel des Xerox Alto nun endgültig ins Museum? Nein, natürlich nicht. Es wird weiterhin zahlreiche Anwendungen geben, in denen Maus und Tastatur perfekt Sinn machen; in denen man den Cursor präzise positionieren möchte und nicht „irgendwo in der Nähe“; in denen Dateneingabe eine zentrale Rolle spielt. Verwenden Sie weiterhin die gewohnten Technologien, alle Anwendungen, die unter Windows 7 funktioniert haben, funktionieren auch unter Windows 8 (das versicherte Steven Sinofsky in seiner Keynote auf der BUILD-Konferenz). Aber mit Metro Style Apps kommt eine zusätzliche Option für die Entwicklung von Anwendungen ins Spiel:

  • Wenn Touch-Bedienung eine zentrale Rolle spielt
  • Wenn es eher um die Anzeige vorhandener Daten, als um die Eingabe neuer Daten geht
  • Wenn die Anwendung auf Tablets genauso funktionieren soll, wie auf gewöhnlichen Desktop-PCs
  • Wenn Sie die Software über den Windows Store verteilen wollen, dann sollten Sie Metro Style Apps für ihr nächstes Projekt im Hinterkopf haben. Nur ein Downloadlink trennt Sie von den ersten Versuchen [6].

Viel Spaß in der Welt von Windows 8!

Roman Schacherl ist Gründer der Firma smilecompany software solutionsund entwickelt individuelle Lösungen auf Basis von Microsoft-Technologien. Seit einiger Zeit zählt auch Multi-touch zu seinem Interessensgebiet – von Microsoft Surface bis zu Windows 8.
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -