Xamarin.Forms: The future of mobile app development

Xamarin.Forms: The future of mobile app development

What is Xamarin.Forms

Building cross-platform Real UIs (User Interface) with one shared codebase was once just a dream. With Xamarin.Forms, this dream is now a reality. Xamarin.Forms allow you to build a native UI for three platforms with a shared C # codebase.

If you know C # then you are ready to build iOS, Android, and Windows apps with more platforms on the horizon.

Xamarin.Forms is already active with tons of awesome features and has recently made major improvements in stability and performance. The fun does not stop there as we continue to make significant advancements.

Use one code-base and target different mobile platforms

The logic of the mobile application is active instead of passive in C #, no native Java, Objective-C, Swift is needed.

Use Native when you want to use the native layouts for each supported platform
(ie, Android: axml layouts, iOS: storyboards and viewControllers, Windows Phone: XAML pages).

Use Xamarin.Forms when you want to design your views one time which will be shared across the platforms. Your views will be added to the Portable Class Library.
Xamarin.Forms compile as native views for each platform.
So your UI wants to render using the native controls on each device

Shared C # Logic

Shared C # Logic

How can I create the UI

This can either be done via code (C #) or markup (XAML). My personal favorite is XAML because I think it’s easier than writing everything in code.

Author your UI in C # or XAML. Xamarin.Forms pages represent individual screens within an app. Pages contain advanced gesture support and layouts, buttons, labels, lists, and other common controls. IOS, Android, and Windows Phone apps built entirely with shared C #.

Data bindings to MVVM

The Model-View-ViewModel (MVVM) architectural pattern active for Xamarin.Forms.

The pattern enforces a separation of the XAML user interface (the view) from the underlying data (the model) through a class that serves as an intermediary between the view and the model (the ViewModel). The View and the ViewModel active through data bindings defined in the XAML file.

Here’s a simple example of binding a date into a label:

<? xml ….

<Label Text = „{Binding Year, StringFormat = ‚The year is {0}’}“ />
<Label Text = „{Binding StringFormat = ‚The month is {0: MMMM}’}“ />
<Label Text = „{Binding Day, StringFormat = ‚The day is {0}’}“ />
<Label Text = „{Binding StringFormat = ‚The time is {0: T}’}“ /> „

Xamarin.Forms: DependencyService

„DependencyService“ allows apps to call into platform-specific functionality from shared code. This functionality enables Xamarin.Forms apps to do almost anything that a native app can do. For example, taking a photo with different APIs on Android or iOS. With „DependencyService“ the application code has only been written once.

The structure of the application is explained in the following diagram:

interface

The interface you design wants to define how you interact with platform-specific functionality. The example below specifies a simple interface for speaking that allows for flexibility in specifying the words to be spoken.

public interface ITextToSpeech {
    void Speak ( string text ); //note that interface members are public by default
}

Implementation by Platform

Once a suitable interface has been designed, that interface must be implemented in the project for each platform that you are targeting.

For example, the following classes implement the  ITextToSpeech interface on Windows Phone:

namespace TextToSpeech.WinPhone
{
  public class TextToSpeechImplementation : ITextToSpeech
  {
      public TextToSpeechImplementation() {}

      public async void Speak(string text)
      {
          SpeechSynthesizer synth = new SpeechSynthesizer();
          await synth.SpeakTextAsync(text);
      }
  }
}

Registration

Each implementation of the interface needs to be registered  DependencyService with a metadata attribute.

Call to DependencyService

DependencyService.Get<ITextToSpeech>().Speak("Hello from Xamarin Forms");

What’s next

Example of a small mobile app for iOS and Android with the Following components:
– Login Page to CRM system
– Permissions / roles for sales or service
– For the service-role show all open tickets
– For the sales-role display all open projects
– Statistics screen

Left:

Xamarin.Forms
https://www.xamarin.com/platform

Binding with MVVM
https://developer.xamarin.com/guides/xamarin-forms/xaml/xaml-basics/data_bindings_to_mvvm/

DependencyService
https://almirvuk.blogspot.co.at/2017/09/xamarinforms-dependencyservice.html

zurück zur Übersicht

Ein Kommentar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.