maui-app-icons-splash について
.NET MAUI のアイコンとスプラッシュ画面を設定する開発者向けのガイドです。Android のセーフゾーン、SVG のサイズ指定、ビルド時の描画問題を扱います。
主な機能
- 01アイコンとスプラッシュの設定確認
- 02Android アダプティブアイコンのセーフゾーン案内
- 03SVG と PNG のトラブルシューティング
- 04BaseSize のサイズ指定ガイダンス
- 05実機テストのチェックリスト
活用シーン
- 01空白または切り抜かれたアイコンの診断
- 02SVG のビルド時描画問題の解決
- 03プラットフォーム別アイコンサイズの修正
- 04スプラッシュ画面のプロジェクト設定確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ davidortinau/ maui-skills --skill maui-app-icons-splashインストール後、Claude Code で/maui-app-icons-splashを入力して読み込まれたか確認します。
同梱ファイルreferences/icons-splash-api.md
詳細
.NET MAUI アプリアイコンとスプラッシュ画面
よくある落とし穴
❌ Android のアダプティブアイコンの切り抜き
Android のアダプティブアイコンは、円形または角丸四角形のセーフゾーンに合わせて切り抜かれます。前景がキャンバスいっぱいに広がっていると、必ず切り抜かれます。
<MauiIcon Include="Resources\AppIcon\appicon.svg"
Color="#512BD4" />
<MauiIcon Include="Resources\AppIcon\appicon.svg"
ForegroundFile="Resources\AppIcon\appiconfg.svg"
ForegroundScale="0.65"
Color="#512BD4" />
❌ 透明なスプラッシュ画面の Color
一部のプラットフォームでは、スプラッシュの Color のアルファ値が無視され、代わりに黒で表示されます。
<MauiSplashScreen Include="Resources\Splash\splash.svg"
Color="#00FFFFFF" />
<MauiSplashScreen Include="Resources\Splash\splash.svg"
Color="#512BD4" />
❌ Color と TintColor の混同
Color= アイコン/スプラッシュの背後にある背景色です。TintColor= 前景画像自体の色を変更します。
表示可能な前景パスがない状態で TintColor だけを設定すると、アイコンが空白になります。
⚠️ ビルド時の SVG レンダリングの問題
グラデーション、フィルター、マスクを含む複雑な SVG は、Microsoft.Maui.Resizetizer MSBuild タスクでは正しくラスタライズされない場合があります。
<MauiIcon Include="Resources\AppIcon\appicon.png"
Resize="false" />
⚠️ BaseSize の不一致
SVG の viewBox が希望する論理サイズと一致しない場合は、BaseSize を明示的に設定してください。そうしないと、出力サイズが正しくならないことがあります。
<MauiIcon Include="Resources\AppIcon\appicon.svg"
BaseSize="456,456"
Color="#512BD4" />
ベストプラクティス
- 可能な限り SVG を使用する — ファイルが 1 つで、無限に拡大縮小でき、リポジトリのサイズも小さくなります。
- SVG の viewBox が希望する論理サイズと一致しない場合は、
BaseSizeを明示的に設定する。 - スプラッシュ画像はシンプルにする — 大きい SVG や複雑な SVG はビルドを遅くし、描画に問題が生じる場合があります。
- 実機でテストする — エミュレーターの画面密度ではアイコンの切り抜きが目立たなくなるため、特に Android のアダプティブアイコンのセーフゾーンを確認してください。
- Android では合成アイコンを使用する —
ForegroundFileとForegroundScale="0.65"を組み合わせることで、前景をセーフゾーン内に収められます。
トラブルシューティング
| 症状 | 考えられる対処法 |
|---|---|
| アイコンが空白または白く表示される | Color と TintColor の設定を確認し、SVG パスが存在することを確認する |
| スプラッシュに既定の .NET ロゴが表示される | .csproj に MauiSplashScreen 項目があることを確認する |
| Android のアイコンが切り抜かれて見える | ForegroundScale="0.65" を指定した合成アイコンを使用する |
| SVG のビルドエラーが発生する | SVG をシンプルにするか、Resize="false" を指定して PNG に切り替える |
| あるプラットフォームだけアイコンのサイズが違う | .csproj で BaseSize を明示的に設定する |
チェックリスト
-
.csprojにColorが設定されたMauiIcon項目がある -
.csprojにColorとBaseSizeが設定されたMauiSplashScreen項目がある - Android:セーフゾーンに適合させるため、
ForegroundScaleを指定した合成アイコンを使用している - SVG のソースがシンプルである(グラデーション/フィルターなし)、または
Resize="false"を指定した PNG の代替画像を使用している - 画面密度と切り抜きを確認するため、エミュレーターだけでなく実機でもテストしている
コメント
Markdown 対応