Xamarinでは画面を作成するのにXamarin.FormsとネイティブUIの2つの方法がある。それぞれの方法で簡単なアプリを作ってみよう。
Xamarin for Visual Studio(以降、「Xamarin VS」と略す)は、Visual Studioに統合されたクロスプラットフォーム開発環境だ。使い慣れたVisual StudioとC#で、クロスプラットフォーム開発ができる。この連載は、Xamarin VSを使ったアプリ開発の初歩を解説する。
前回は、Xamarinの概要と、Xamarin VSでプロジェクトを作って動かすまでを説明した。今回は、2通りのUI(=ユーザーインタフェース)の作り方を解説しよう。前回に続けてXamarin.Formsを詳しく解説した後、もう1つの作り方であるネイティブUIも簡単に紹介する。
前回の最後で紹介したように、XamarinにはUIを作る2通りの方法がある。1つは、クロスプラットフォームにUIを定義するXamarin.Forms。もう1つは、プラットフォームごとのUI定義方法を使うネイティブUIだ(一般には「Xamarin Native」と呼ばれるが、「ネイティブコード」とまぎらわしいので本稿では「ネイティブUI」と呼ぶ)。
前回に掲載したネイティブUIとXamarin.Formsの違いを簡単にまとめた表を、再度載せておく。
ネイティブUI | Xamarin.Forms | |
---|---|---|
使えるUIコントロール | プラットフォームに用意されているUIコントロールの全て | プラットフォームに共通するUIコントロールのみ |
UIを記述する場所 | プラットフォームごとのプロジェクト | 共通のプロジェクト |
なお、ネイティブUIでも、ロジックのコードはC#で書く。また、ネイティブUIのロジックも、PCLプロジェクトか共有プロジェクトに書くのが基本だ。
さて、前回の続きだ。
前回はプロジェクトテンプレートに[Blank Xaml App (Xamarin.Forms Portable)]を選び、"Hello, Xamarin!"アプリを作ってみた。今回は、その表示文字列を現在時刻に変えるところから始めてみよう(次の画像)。以降のコードは、前回の"Hello, Xamarin!"アプリをスタート地点として解説する。
ボタンをクリックするとそのときの時刻が表示されるようにしてみよう。WindowsフォームやWPFで.NETの開発者にはおなじみのイベントハンドラーが使える。
まず、画面にボタンを追加する。ソリューションエクスプローラーで[HelloXamarin]プロジェクトの[MainPage.xaml]を選んで、次のコードのように編集しよう。
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:HelloXamarin"
x:Class="HelloXamarin.MainPage">
<!--<Label Text="Hello, Xamarin!" TextColor="Aqua"
FontSize="Large" FontAttributes="Bold, Italic"
VerticalOptions="Center"
HorizontalOptions="Center" />-->
<StackLayout VerticalOptions="Center">
<Label x:Name="Label1" Text="Hello, Xamarin!" TextColor="Aqua"
FontSize="Large" FontAttributes="Bold, Italic"
HorizontalOptions="Center" />
<Button Text="Click me!" Clicked="Button_Clicked"
FontSize="Medium" HorizontalOptions="Center" />
</StackLayout>
</ContentPage>
続いて、コードビハインドの「MainPage.xaml.cs」ファイルを開き、次のコードのようにイベントハンドラーを追加する。
using System;
……省略……
using Xamarin.Forms;
namespace HelloXamarin
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
private void Button_Clicked(object sender, EventArgs e)
{
Label1.Text = DateTimeOffset.Now.ToString("HH:mm:ss");
}
}
}
これでデバッグ実行してボタンをクリックすると、次の画像のように時刻が表示される。WPFとよく似たイベントハンドラーの書き方で、AndroidアプリもiOSアプリも作れるのである。
Copyright© Digital Advantage Corp. All Rights Reserved.