[Xamarin] MacでXamarinを起動してみる

Xamarinを使用すると、Visual Studio上でiOSアプリやAndroidアプリを作成することができます。またMac用のXamarinもあります。

今回はMac用Xamarinをインストールし、起動してみたのでそのレポートです。

MacのXamarinアイコンは以下の通りです。オレンジに「X」という文字が素敵です。

Xamarinのアイコン

Xamarinを起動し画面左上のNew Solustionをクリックするすると以下のような画面が立ち上がります。

作成できるプロジェクトはMulitplatfor,iOS,tvOS,Android,Mac,その他とあります。
様々なアプリケーションを作成できるのはうれしいですね。

ここでは[iOS]-[App]-[Single View App]を選択して[Next]ボタンを押してソリューションを作成してみます。

Xamarin起動時の画面

続いて作成するiOSアプリの設定を行います。App Nameには作成するアプリケーション名を、Organization Identifierにはユニークな名前をを入力します。

また、どのデバイスを対象にするかをチェックし、ターゲットを選択し、[Next]をクリックします。

作成するiOSアプリの設定

続いてプロジェクトの設定を行います。プロジェクト名を入力して[作成]ボタンを押してプロジェクトの完成です。

プロジェクトの設定

Visual Studioのプロジェクトの作成方法とは異なりますが、迷うことなくプロジェクトを作成することができました。

次回以降、徐々にiOSアプリやAndroidアプリの作成方法を見ていきます。

 

 

[UWP] スプラッシュスクリーンを表示する

今回はスプラッシュスクリーンの表示方法について見ていきます。

スプラッシュスクリーンはPackage.appmanifestファイルで設定をします。Package.appmanifestを開き、「ビジュアル資産」タブを選択します。

続いて、左側の一覧で「スプラッシュスクリーン」を選択し、右側でスプラッシュスクリーンに表示する画像を選択します。

背景色の欄では、スプラッシュスクリーン全体の背景色を設定します。

以上の設定をしておくだけで、自動でスプラッシュスクリーンが表示されます。

スプラッシュスクリーンの設定

 

[UWP][クリップボード] クリップボードを使用する

UWPでクリップボードを使用するには、はじめにDataPackageクラスのインスタンスを作成してデータをセットします。

続いてデータを作成したDataPackageのインスタンスを、ClipBbardのSetContentメソッドを使用してセットします。

コード例は以下の通りです。

var dp = new Windows.ApplicationModel.DataTransfer.DataPackage();
dp.SetText("UWPアプリ");
Windows.ApplicationModel.DataTransfer.Clipboard.SetContent(dp);

クリップボードからのデータ取得する場合は ClipboardのGetContentメソッドを使用します。

クリップボードには様々なデータが格納されるため、取得するデータの種類を指定する必要があります。種類はWindows.ApplicationModel.DataTransfer.StandardDataFormatsが持つ値で指定します。

ApplicationLink
Bitmap
Html
Rtf
StorageItems
Text
Uri
WebLink

以下に種類がTextのデータを取得する例を示します。

var dpv = Windows.ApplicationModel.DataTransfer.Clipboard.GetContent();
if (dpv.Contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.Text))
{
    textBoxDest.Text = await dpv.GetTextAsync();
}

[UWP][ドラッグ&ドロップ] ドラッグ&ドロップを実装する

今回はUWPアプリでのドラッグ&ドロップについて見ていきます。

MainPage.xamlには既定でGridが配置されています。

このGridでドラッグ&ドロップをできるようにするには、はじめにAllowDropプロパティをTrueにしておきます。

続いて、DragOverのイベントを作成します。このイベントは、アプリケーション内にドラッグしようとしているときに発生します。

このイベントのe.AcceptedOperationにDataPackageOperation列挙体の値を設定することで アイコンの見た目を変更することができます。

設定可能なアイコンは以下表の通りです。

説明
Copy ドラッグしようとしているアイコンの上に「コピー」の文字が表示される
Move ドラッグしようとしているアイコンの上に「移動」の文字が表示される
Link ドラッグしようとしているアイコンの上に「リンク」の文字表示される
None ドラッグしようとしているアイコンの上に「禁止マーク」が表示される

コピーアイコンにする場合は以下のようにコードを記述します。

private void Grid_DragOver(object sender, DragEventArgs e)
{
    e.AcceptedOperation = Windows.ApplicationModel.DataTransfer.DataPackageOperation.Link;
}

続いてドロップされた場合の処理ですが、個の場合はDropイベントが発生します。

引数のe.DataView.Containsメソッドで、ドロップされたファイルの種類を調べます。

ドロップされたファイルの種類はWindows.ApplicationModel.DataTransfer.StandardDataFormatsが持つ値で指定します。

指定可能な値を以下の表に示します。

ApplicationLink
Bitmap
Html
Rtf
StorageItems
Text
Uri
WebLink

ファイルがドロップされたことを調べるには以下のように記述します。

private async void Grid_Drop(object sender, DragEventArgs e)
{
    if (e.DataView.Contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.StorageItems))
    {
        // ファイルのパス一覧を取得する
        var items = await e.DataView.GetStorageItemsAsync();
        var filePaths = items.Select(x => x.Path).ToArray();
    }
}

[UWP][MediaElement] 再生位置を取得/設定する

Postionプロパティを使用すると、現在の再生位置を取得したり設定したりする音ができます。再生位置はTImeSpan型です。

はじめに再生位置を取得する例を示します。

TimeSpan ts = myMediaElement.Position;

次に再生位置を設定する例を示します。以下は10秒の位置から再生をする例です。

myMediaElement.Position = new TimeSpan(0, 0, 10);
myMediaElement.Play();