はつねの日記

Kinect, Windows 10 UWP, Windows Azure, IoT, 電子工作

Xamarin.FormsからMAUIへアプリ内画像を移植する

前回:
hatsune.hatenablog.jp

MAUIアプリは、1つのプロジェクトの中で画像などもプラットフォーム共通部分とプラットフォーム固有部分を分けて定義できます。

プラットフォーム共通部分は、プロジェクト直下にある「Resource\Images」フォルダに配置し、プラットフォーム固有部分については(例えばAndroidの場合)「Platfoems\Android\Resources\Drawable」フォルダに配置します。

画像ファイル移動

Xamarin.FormsからMAUIに移植する作業であれば、「Platfoems\Android\Resources\Drawable」フォルダから「Resource\Images」フォルダに画像ファイルを移動することになります。

この画像ファイルの移動については、Visual Studioのソリューションエクスプローラで行いのではなく、ファイルエクスプローラを使ってファイルを移動させてください。理由は後程。

画像ファイル移動の注意点

画像ファイル名の変更

画像ファイル名は「英大文字」がつかえず「英小文字と_」のみになります。
よって、「ImageFolder.png」のようなファイル名は「image_folder.png」にする必要があります。

ビルドアクションの変更

「Platfoems\Android\Resources\Drawable」フォルダの画像ファイルのビルドアクションは「AndroidResouce」です。
一方、プラットフォーム共通の「Resource\Images」フォルダに配置する画像ファイルは「MauiImage」です。
「AndroidResouce」のままだとビルド時にエラーになります。
このビルドアクションの変更ですが、ファイルエクスプローラーでファイルを移動した場合、Visual Studioが自動的に「MauiImage」のビルドアクションを設定してれます。ソリューションエクスプローラでやるとビルドアクションが維持されちゃうので注意してください。

画像ファイルの指定方法の変更点

このように移動した前後でも画面定義体XAMLや、コード中での画像ファイルの参照は変更不要です。

もちろんファイル名をすべて小文字に変更する作業が発生したときは、ファイル名の小文字かだけは実施してください。

今回は以上になります。
せっかくMAUIにするのであれば、プラットフォーム固有は本当に必要な最小限にして共通部分に移植していきたいですね。