Как добавить иконку приложения и Splash Screen?

В Xamarin.Forms добавление иконки приложения и заставки (Splash Screen) требует отдельной настройки для каждой платформы — Android и iOS. Xamarin.Forms предоставляет единый интерфейс для разработки UI, но работа с такими ресурсами, как иконка и стартовый экран, требует ручного внесения изменений в нативные проекты каждой платформы.

1. Добавление иконки приложения

Android

Шаг 1: Подготовка изображений

Создайте изображения иконок в разных размерах. Они должны соответствовать стандартам Android:

  • mipmap-mdpi (48x48)

  • mipmap-hdpi (72x72)

  • mipmap-xhdpi (96x96)

  • mipmap-xxhdpi (144x144)

  • mipmap-xxxhdpi (192x192)

Формат: .png, без прозрачности (лучше на сплошном фоне).

Шаг 2: Размещение файлов

Положите файлы в папки:

YourApp.Android/Resources/mipmap-\*/icon.png

Если в проекте используется Resources/drawable, также можно использовать её, но mipmap-* предпочтительнее.

Шаг 3: Указание иконки в AndroidManifest.xml

Файл находится по пути:

YourApp.Android/Properties/AndroidManifest.xml

Добавьте или измените атрибут android:icon внутри тега <application>:

<application android:icon="@mipmap/icon" android:label="Your App Name">

Если используется MainActivity.cs с атрибутом [Activity], там тоже может быть указан Icon:

\[Activity(Label = "YourApp", Icon = "@mipmap/icon", MainLauncher = true, ...)\]

iOS

Шаг 1: Подготовка изображений

Иконки для iOS должны быть квадратными и без прозрачности:

  • 20x20, 29x29, 40x40, 60x60, 76x76, 83.5x83.5, 1024x1024 и др.

  • Используются @1x, @2x, @3x версии (например: 60x60, 120x120, 180x180).

  • Требуемые размеры можно узнать из шаблона Assets.xcassets.

Шаг 2: Использование Asset Catalog

  1. Откройте YourApp.iOS в Xcode или Visual Studio for Mac.

  2. Перейдите в Assets.xcassets.

  3. Найдите AppIcon.

  4. Замените шаблонные иконки своими.

  5. Сохраните изменения.

Это обновит Info.plist автоматически. Убедитесь, что в Info.plist нет старых CFBundleIconFile.

2. Настройка Splash Screen (экран загрузки)

Android

До Android 12 использовался стандартный подход с темой. Начиная с Android 12, появился встроенный SplashScreen API. Ниже описан подход, совместимый с большинством версий.

Шаг 1: Создайте файл splash_screen.xml

В Resources/drawable:

&lt;?xml version="1.0" encoding="utf-8" ?&gt;
&lt;layer-list xmlns:android="http://schemas.android.com/apk/res/android"&gt;
&lt;item android:drawable="@color/white" /&gt;
&lt;item&gt;
<bitmap
android:gravity="center"
android:src="@drawable/splash_logo" />
&lt;/item&gt;
&lt;/layer-list&gt;
  • @color/white — фон (можно задать в colors.xml)

  • @drawable/splash_logo — логотип/иконка (например, 200x200)

Шаг 2: Создайте стиль

В Resources/values/styles.xml:

&lt;style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar"&gt;
&lt;item name="android:windowBackground"&gt;@drawable/splash_screen&lt;/item&gt;
&lt;/style&gt;

Шаг 3: Создайте SplashActivity

\[Activity(Theme = "@style/SplashTheme", MainLauncher = true, NoHistory = true)\]
public class SplashActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
StartActivity(typeof(MainActivity));
}
}

Шаг 4: Настройка MainActivity

Удалите MainLauncher = true, оставьте:

\[Activity(Label = "YourApp", Icon = "@mipmap/icon")\]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity

Теперь при запуске сначала загружается SplashActivity, которая отображает заставку и запускает основное приложение.

iOS

Системный подход — использование LaunchScreen.storyboard.

Шаг 1: Откройте LaunchScreen.storyboard

Находится в YourApp.iOS/Resources.

Шаг 2: Оформление Splash Screen

Откройте storyboard в Xcode Interface Builder:

  • Добавьте ImageView и выберите логотип.

  • Настройте выравнивание по центру.

  • Задайте цвет фона или фон через View.

Можно создать простой экран с логотипом и фоном. iOS не поддерживает анимации или логику в Splash Screen.

Шаг 3: Настройка Info.plist

Убедитесь, что в Info.plist указано:

&lt;key&gt;UILaunchStoryboardName&lt;/key&gt;
&lt;string&gt;LaunchScreen&lt;/string&gt;

Это укажет iOS использовать LaunchScreen.storyboard.

Советы по Splash Screen

  • Минимализм — логотип + цвет фона, чтобы экран не вызывал задержку восприятия.

  • Не используйте текст/лого, которые могут меняться — обновления потребуют правки.

  • Не добавляйте анимации или сложную графику — платформы это не поддерживают.

Генерация ресурсов автоматически

Можно использовать генераторы:

  • https://appicon.co/ — генерация App Icons для iOS и Android.

  • https://romannurik.github.io/AndroidAssetStudio/icons-launcher.html — для Android иконок.

  • https://www.figma.com/ или Photoshop — подготовка SVG/PNG в нужных размерах.

Обзор расположения файлов

YourApp/
├── YourApp/
 └── ViewModels/
├── YourApp.Android/
 └── Resources/
 ├── mipmap-\*/icon.png
 ├── drawable/splash_logo.png
 ├── drawable/splash_screen.xml
 └── values/styles.xml
├── YourApp.iOS/
 ├── Resources/
  ├── LaunchScreen.storyboard
  └── Images.xcassets/AppIcon.appiconset
 └── Info.plist

Иконка приложения и Splash Screen настраиваются индивидуально для Android и iOS, в соответствии с требованиями каждой платформы. Xamarin.Forms позволяет работать с ними через нативные механизмы, а также поддерживает отображение заставки через кастомные активности и storyboard-интерфейсы.