Since the beginning of Xamarin's lifetime as a company, their motto has always been to expose the native APIs on iOS and Android directly to C#. This was a great strategy at the beginning, because applications built with Xamarin.iOS or Xamarin.Android were pretty much indistinguishable from a native Objective-C or Java application. Code sharing was generally limited to non-UI code that left a potential gap to fill in the Xamarin ecosystem: a cross-platform UI abstraction. Xamarin.Forms is the solution to this problem, a cross-platform UI framework that renders native controls on each platform. Xamarin.Forms is a great solution for those who know C# (and XAML), but also might not want to get into the full details of using the native iOS and Android APIs.
In this chapter, we will cover the following:
To understand how a Xamarin.Forms application is put together, let's begin by creating a simple "Hello World" application.
Open Xamarin Studio and perform the following steps:
HelloForms
.Notice the three new projects that were successfully created: HelloForms
, HelloForms.Android
, and HelloForms.iOS
. In Xamarin.Forms applications, the bulk of your code will be shared, and each platform-specific project is just a small amount of code that starts the Xamarin.Forms framework.
Let's examine the minimal parts of a Xamarin.Forms application:
App.cs
in the HelloForms
PCL library. This class holds the startup page of the Xamarin.Forms application. A simple static method, GetMainPage()
, returns the startup page of the application. In the default project template, ContentPage
is created with a single label that will be rendered as a UILabel
on iOS and a TextView
on Android.MainActivity.cs
in the HelloForms.Android
Android project. This is the main launcher activity of the Android application. The important part for Xamarin.Forms here is the call to Forms.Init(this, bundle)
that initializes the Android-specific portion of the Xamarin.Forms framework. Next is a call to SetPage(App.GetMainPage())
that displays the native version of the main Xamarin.Forms page. AppDelegate.cs
in the HelloForms.iOS
iOS project. This is very similar to Android, except iOS applications startup via a UIApplicationDelegate
class. Forms.Init()
will initialize the iOS-specific parts of Xamarin.Forms, while App.GetMainPage().CreateViewController()
will generate a native controller that can be used as the RootViewController
of the main window of the application.Go ahead and run the iOS project; you should see something similar to the following screenshot:
If you run the Android project, you will get a UI very similar to the iOS, but using the native Android controls, as shown in the following screenshot:
Even though not covered in this book, Xamarin.Forms also supports Windows Phone applications. However, a PC running Windows and Visual Studio is required to develop for Windows Phone. If you can get a Xamarin.Forms application working on iOS and Android, then getting a Windows Phone version working should be a piece of cake.
3.133.134.151