Как добавить иконку приложения и 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
-
Откройте YourApp.iOS в Xcode или Visual Studio for Mac.
-
Перейдите в Assets.xcassets.
-
Найдите AppIcon.
-
Замените шаблонные иконки своими.
-
Сохраните изменения.
Это обновит Info.plist автоматически. Убедитесь, что в Info.plist нет старых CFBundleIconFile.
2. Настройка Splash Screen (экран загрузки)
Android
До Android 12 использовался стандартный подход с темой. Начиная с Android 12, появился встроенный SplashScreen API. Ниже описан подход, совместимый с большинством версий.
Шаг 1: Создайте файл splash_screen.xml
В Resources/drawable:
<?xml version="1.0" encoding="utf-8" ?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/white" />
<item>
<bitmap
android:gravity="center"
android:src="@drawable/splash_logo" />
</item>
</layer-list>
-
@color/white — фон (можно задать в colors.xml)
-
@drawable/splash_logo — логотип/иконка (например, 200x200)
Шаг 2: Создайте стиль
В Resources/values/styles.xml:
<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@drawable/splash_screen</item>
</style>
Шаг 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 указано:
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
Это укажет 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-интерфейсы.