Spec-Zone.ru › Cordova 6

cordova-plugin-splashscreen

Для работы со splash-экранами требуется этот плагин. Данный плагин отображает и скрывает splash-экран во время запуска приложения.

Сообщайте о проблемах с этим плагином в следящей за ошибками системе Apache Cordova.

Установка

// npm hosted (new) id
cordova plugin add cordova-plugin-splashscreen

// you may also install directly from this repo
cordova plugin add https://github.com/apache/cordova-plugin-splashscreen.git

Поддерживаемые платформы

  • Amazon Fire OS
  • Android
  • BlackBerry 10
  • iOS
  • Windows Phone 7 и 8
  • Windows (cordova-windows версия >= 4.4.0 требуется)
  • Браузер

Примечание: Расширенный splash-экран не требует плагина на Windows (в отличие от Android и iOS), если вы не используете API плагина, т.е. программно не скрываете/отображаете.

Информация, специфичная для iOS

Существует два механизма для отображения экрана запуска на iOS:

  1. Наследованные изображения запуска: изображения имеют размер точно соответствующий размеру экрана устройства. Не поддерживает родное разрешение iPad Pro 12.9 или многозадачность разделенного экрана/слайда.

  2. Изображения storyboard запуска: изображения масштабируются на основе масштаба, стиля и классов размера. Поддерживает все устройства и может использоваться с многозадачностью разделенного экрана/слайда.

Apple отходит от наследованных изображений запуска. Нет официальной поддержки предоставления изображения запуска с родным разрешением для iPad Pro 12.9 или для предоставления изображений запуска, которые работают с многозадачностью разделенного экрана или слайда. Если ваше приложение не требует поддержки этих контекстов, то вы можете продолжать использовать наследованные изображения запуска, как вам удобно.

Предпочтительный метод предоставления изображений запуска — использование storyboard запуска. Для разработчиков нативных приложений идеальный storyboard запуска — незаполненная версия пользовательского интерфейса приложения при запуске. Однако для разработчиков приложений, не написанных нативно, которые не хотят изучать Interface Builder, этот плагин имитирует метод наследованного изображения запуска насколько это возможно.

Наследованные изображения запуска

Если вы выберете использование наследованных изображений запуска, вы будете использовать следующий синтаксис в config.xml:

<splash src="res/screen/ios/Default~iphone.png" width="320" height="480"/>
<splash src="res/screen/ios/Default@2x~iphone.png" width="640" height="960"/>
<splash src="res/screen/ios/Default-Portrait~ipad.png" width="768" height="1024"/>
<splash src="res/screen/ios/Default-Portrait@2x~ipad.png" width="1536" height="2048"/>
<splash src="res/screen/ios/Default-Landscape~ipad.png" width="1024" height="768"/>
<splash src="res/screen/ios/Default-Landscape@2x~ipad.png" width="2048" height="1536"/>
<splash src="res/screen/ios/Default-568h@2x~iphone.png" width="640" height="1136"/>
<splash src="res/screen/ios/Default-667h.png" width="750" height="1334"/>
<splash src="res/screen/ios/Default-736h.png" width="1242" height="2208"/>

Технически имя файла для атрибута src может быть любым; имена файлов используются, потому что они соответствуют тому, что будет использоваться при компиляции вашего проекта. Атрибуты width и height определяют, какие изображения запуска отображаются на каких устройствах следующим образом:

width height устройство (ориентация)
320 480 Все не-ретина iPhone и iPod
640 960 iPhone 4/4s/5/5s (портрет)
750 1334 iPhone 6/6s/7 (портрет)
1242 2208 iPhone 6+/6s+/7+ (портрет)
2208 1242 iPhone 6+/6s+/7+ (горизонт)
768 1024 Все не-ретина iPad (портрет)
1024 768 Все не-ретина iPad (горизонт)
1536 2048 Все ретина iPad (портрет)
2048 1536 Все ретина iPad (горизонт)

Примечание: Крайне важно, чтобы исходное изображение фактически соответствовало размеру, указанному в атрибутах width и height. Если это не так, устройство может неверно отобразить его, или вообще не отобразить.

Изображения storyboard запуска

Для поддержки новых форм факторов и многозадачности разделенного экрана/слайда вы должны использовать изображения storyboard запуска. Они похожи на наследованные изображения запуска выше, но существуют важные различия:

  • изображения не специфичны для данного устройства.

  • изображения масштабируются для заполнения доступного viewport (при сохранении соотношения сторон).

  • крайние края изображений будут обрезаны, а количество будет варьироваться в зависимости от устройства и viewport.

  • нет необходимости предоставлять изображение для каждого возможного устройства, viewport и ориентации; iOS автоматически выберет лучшее изображение для ситуации.

Создание изображений storyboard запуска

Ключ к созданию изображения storyboard запуска — понимание того, что края изображения почти наверняка будут обрезаны. Поэтому не следует размещать важную информацию рядом с краями предоставляемых изображений для storyboard запуска. Только центр является безопасной зоной, и это практически гарантирует, что следование совету Apple о представлении незаполненного пользовательского интерфейса не сработает хорошо.

Вместо этого, следующие советы помогут вам создать изображение запуска, которое работает на множестве форм факторов, viewport и ориентаций:

  • Важные графические элементы (логотипы, значки, заголовки) должны быть центрированы. Безопасная ограничительная область будет меняться, поэтому вам нужно будет проверить, чтобы важные графические элементы никогда не обрезались. Лучше всего — не предоставлять важных графических элементов изначально.

    • Вы можете уточнить расположение и размер этих графических элементов, но у вас нет такого же тонкого контроля, как у вас было с наследованными изображениями запуска.
  • Используйте простую цветную заливку. Если вы используете два цвета, вы хотите, чтобы один цвет заполнял верхнюю половину изображения, а второй — нижнюю половину. Если вы используете градиент, вам, вероятно, нужно будет убедиться, что середина градиента совпадает с центром изображения.

  • Не беспокойтесь о точном отображении пикселей — потому что изображения масштабируются, практически нет шансов, что изображения будут идеально соответствовать пиксельной сетке. Поскольку все поддерживаемые iOS устройства используют экраны с сетчаткой, пользователи вряд ли заметят это.

Важно понять концепции масштаба, стиля и классов размера для эффективного использования изображений storyboard запуска. Из предоставленных изображений для storyboard запуска iOS выберет изображение, которое лучше всего соответствует устройству и viewport, и отобразит это изображение. Можно предоставить только одно изображение запуска, если это необходимо, но также можно усовершенствовать отображаемое изображение запуска на основе характеристик. При уточнении можно игнорировать характеристики, которые не являются целевыми или не поддерживаются приложением.

Примечание: Если вы используете изображения storyboard запуска, нет необходимости включать наследованные изображения. Если вы это сделаете, наследованные изображения будут скопированы, но не будут использоваться.

Масштаб
масштаб устройства
1x Все не-ретина устройства
2x Большинство устройств с сетчаткой
3x iPhone 6+/6s+,7s+

В общем случае вы захотите предоставить изображения 2x и 3x. Cordova поддерживает только устройства с сетчаткой сейчас, поэтому нет смысла предоставлять изображения 1x.

Стили
стиль устройства
ipad Все iPad
iphone Все iPhone и iPod Touch
universal Все устройства

Вам нужно предоставить только универсальные изображения, если вам не нужно уточнять для конкретного стиля устройства.

Классы размера

Существует два класса размера, применимые к обеим осям экрана. Узкие viewport считаются классом размера "компактный", а оставшиеся viewport — "обычный". При предоставлении изображений Xcode, однако, нужно выбрать между "любой & компактный" и "любой & обычный". Чтобы поддерживать соответствие с родной терминологией, эта функция будет соответствовать на основе "любой" и "компактный". any будет соответствовать viewport обычного размера.

Примечание: эта функция использует com как сокращение для классов "компактный".

Следующие классы поддерживаются этой функцией:

width height ориентация
any any any
com any портрет
any com горизонт (широкий)
com com горизонт (узкий)

Чтобы просмотреть полный список классов размера, связанных с устройствами и viewport, см. http://www.sizeclasses.com.

Одно изображение экрана запуска

Если изображение запуска простое, вы можете избежать создания большого количества различных изображений запуска и предоставить только одно. Изображение запуска должно соответствовать следующим требованиям:

  • изображение должно быть квадратным

  • изображение должно быть достаточно большим, чтобы поместиться на iPad Pro 12.9": 2732x2732

  • любая важная информация должна поместиться в центре

Помните, что изображение будет обрезано, возможно, довольно сильно, в зависимости от viewport.

После создания изображения вы можете включить его в свой проект, добавив следующее в config.xml:

<splash src="res/screen/ios/Default@2x~universal~anyany.png" />

Поскольку предоставляется только одно изображение, iOS будет использовать его в каждом контексте.

Многоизображенческий экран запуска

Если одного изображения запуска недостаточно, вам, вероятно, потребуется предоставить как минимум шесть изображений, если не больше. Кроме того, помните, что вы не сможете точно настроить изображение для определенного устройства, а только для класса устройства, коэффициента отображения и размера viewport.

Если вам не нужно нацеливать изображения на определенный стиль, вы должны создать шесть изображений следующим образом:

scale idiom width height размер имя файла
2x* universal any any 2732x2732 Default@2x~universal~anyany.png
2x universal com any 1278x2732 Default@2x~universal~comany.png
2x universal com com 1334x750 Default@2x~universal~comcom.png
3x* universal any any 2208x2208 Default@3x~universal~anyany.png
3x universal any com 2208x1242 Default@3x~universal~anycom.png
3x universal com any 1242x2208 Default@3x~universal~comany.png

* Этот образ необходим для того, чтобы iOS использовал другие изображения в данном масштабе и стиле.

Примечание: Если размеры 3x кажутся вам слишком маленькими, это потому, что в настоящее время существует только один класс устройств с плотностью 3x: iPhone 6+/6s+/7+.

Вышеприведенный фрагмент выглядит следующим образом в config.xml:

<splash src="res/screen/ios/Default@2x~universal~anyany.png" />
<splash src="res/screen/ios/Default@2x~universal~comany.png" />
<splash src="res/screen/ios/Default@2x~universal~comcom.png" />
<splash src="res/screen/ios/Default@3x~universal~anyany.png" />
<splash src="res/screen/ios/Default@3x~universal~anycom.png" />
<splash src="res/screen/ios/Default@3x~universal~comany.png" />

Если необходимо дальнейшее уточнение на основе стиля устройства, это можно сделать. Это может выглядеть так:

scale idiom width height размер имя файла
2x* iphone any any 1334x1334 Default@2x~iphone~anyany.png
2x iphone com any 750x1334 Default@2x~iphone~comany.png
2x iphone com com 1334x750 Default@2x~iphone~comcom.png
3x* iphone any any 2208x2208 Default@3x~iphone~anyany.png
3x iphone any com 2208x1242 Default@3x~iphone~anycom.png
3x iphone com any 1242x2208 Default@3x~iphone~comany.png
2x* ipad any any 2732x2732 Default@2x~ipad~anyany.png
2x ipad com any 1278x2732 Default@2x~ipad~comany.png

* Этот образ необходим для того, чтобы iOS использовал другие изображения в данном масштабе и стиле.

Вышеприведённое выглядит следующим образом в config.xml:

<splash src="res/screen/ios/Default@2x~iphone~anyany.png" />
<splash src="res/screen/ios/Default@2x~iphone~comany.png" />
<splash src="res/screen/ios/Default@2x~iphone~comcom.png" />
<splash src="res/screen/ios/Default@3x~iphone~anyany.png" />
<splash src="res/screen/ios/Default@3x~iphone~anycom.png" />
<splash src="res/screen/ios/Default@3x~iphone~comany.png" />
<splash src="res/screen/ios/Default@2x~ipad~anyany.png" />
<splash src="res/screen/ios/Default@2x~ipad~comany.png" />
Особенности и известные проблемы
  1. Приложение на целевой платформе может не отражать изменения в изображениях После запуска приложения на целевой платформе iOS кэширует заставку запуска. К сожалению, при изменении изображений iOS не делает кэш недействительным, что означает, что вы по-прежнему увидите старую заставку запуска. Вы можете: удалить приложение или сбросить содержимое и настройки (симулятор).

  2. Симулятор может не отображать ожидаемые изображения при запуске из командной строки При развертывании Xcode на определённый симулятор копируются только ресурсы, соответствующие характеристикам симулятора. Например, если вы пытаетесь запустить приложение на симуляторе iPhone 6s Plus, копируются только заставки запуска с разрешением @3x. Однако при компиляции из командной строки по умолчанию предполагается iPhone 5s, что означает копирование только заставок запуска с разрешением @2x. Если ваши заставки запуска отличаются незначительно, разница, скорее всего, останется незамеченной, но это означает, что единственный точный способ тестирования — это тестирование на физическом устройстве.

  3. anyany должен быть предоставлен для других вариантов Если вы не предоставите версию anyany заставки запуска для конкретного масштаба и стиля, другие варианты (например, anycom, comany, и comcom) будут проигнорированы.

Пример конфигурации

В файле config.xml верхнего уровня (не в platforms) добавьте элементы конфигурации, как указано здесь.

Обратите внимание, что значение атрибута "src" относительно корневого каталога проекта, а не каталога www (см. Directory structure ниже). Вы можете назвать исходное изображение как угодно. Внутреннее имя в приложении определяется Cordova.

Структура каталогов:

projectRoot
    hooks
    platforms
    plugins
    www
        css
        img
        js
    res
        screen
            android
            ios
            windows
<platform name="android">
    <!-- you can use any density that exists in the Android project -->
    <splash src="res/screen/android/splash-land-hdpi.png" density="land-hdpi"/>
    <splash src="res/screen/android/splash-land-ldpi.png" density="land-ldpi"/>
    <splash src="res/screen/android/splash-land-mdpi.png" density="land-mdpi"/>
    <splash src="res/screen/android/splash-land-xhdpi.png" density="land-xhdpi"/>

    <splash src="res/screen/android/splash-port-hdpi.png" density="port-hdpi"/>
    <splash src="res/screen/android/splash-port-ldpi.png" density="port-ldpi"/>
    <splash src="res/screen/android/splash-port-mdpi.png" density="port-mdpi"/>
    <splash src="res/screen/android/splash-port-xhdpi.png" density="port-xhdpi"/>
</platform>

<platform name="ios">
    <!-- There are two mechanisms for showing launch images.
      -- Legacy method (supports all devices except iPad Pro 12.9):
      -- Note: Images are determined by width and height. The following are supported -->
    <splash src="res/screen/ios/Default~iphone.png" width="320" height="480"/>
    <splash src="res/screen/ios/Default@2x~iphone.png" width="640" height="960"/>
    <splash src="res/screen/ios/Default-Portrait~ipad.png" width="768" height="1024"/>
    <splash src="res/screen/ios/Default-Portrait@2x~ipad.png" width="1536" height="2048"/>
    <splash src="res/screen/ios/Default-Landscape~ipad.png" width="1024" height="768"/>
    <splash src="res/screen/ios/Default-Landscape@2x~ipad.png" width="2048" height="1536"/>
    <splash src="res/screen/ios/Default-568h@2x~iphone.png" width="640" height="1136"/>
    <splash src="res/screen/ios/Default-667h.png" width="750" height="1334"/>
    <splash src="res/screen/ios/Default-736h.png" width="1242" height="2208"/>
    <splash src="res/screen/ios/Default-Landscape-736h.png" width="2208" height="1242"/>
    <!-- Storyboard method (supports all devices):
      -- Important: If you use the storyboard method, legacy images are 
      -- copied but ignored.
      -- Note: images are determined by scale, idiom, and size traits. The following
      -- are suggested based on current device form factors -->
    <splash src="res/screen/ios/Default@2x~universal~anyany.png" />
    <splash src="res/screen/ios/Default@2x~universal~comany.png" />
    <splash src="res/screen/ios/Default@2x~universal~comcom.png" />
    <splash src="res/screen/ios/Default@3x~universal~anyany.png" />
    <splash src="res/screen/ios/Default@3x~universal~anycom.png" />
    <splash src="res/screen/ios/Default@3x~universal~comany.png" />

</platform>

<platform name="windows">
    <!-- images are determined by width and height. The following are supported -->
    <splash src="res/screen/windows/splashscreen.png" width="620" height="300"/>
    <splash src="res/screen/windows/splashscreenphone.png" width="1152" height="1920"/>
</platform>

<platform name="blackberry10">
    <!-- Add a rim:splash element for each resolution and locale you wish -->
    <!-- http://developer.blackberry.com/html5/documentation/rim_splash_element.html -->
    <rim:splash src="res/screen/blackberry/splashscreen.png"/>
</platform>

<preference name="SplashScreenDelay" value="10000" />

Настройки

config.xml

  • AutoHideSplashScreen (булево, по умолчанию true). Указывает, скрывать ли заставку запуска автоматически или нет. Заставка запуска скрывается после истечения срока, указанного в настройке SplashScreenDelay.
<preference name="AutoHideSplashScreen" value="true" />
  • SplashScreenDelay (число, по умолчанию 3000). Время в миллисекундах, которое нужно ждать, прежде чем автоматически скрыть заставку запуска.
<preference name="SplashScreenDelay" value="3000" />

Обратите также внимание, что это значение раньше измерялось в секундах, а не в миллисекундах, поэтому значения меньше 30 всё ещё обрабатываются как секунды. (Рассматривайте это как устаревшее исправление, которое исчезнет в будущей версии.)

Чтобы отключить заставку запуска, добавьте следующую настройку в config.xml:

<preference name="SplashScreenDelay" value="0"/>

Особенности iOS: чтобы отключить заставку запуска на платформе ios, также необходимо добавить <preference name="FadeSplashScreenDuration" value="0"/> в config.xml.

  • FadeSplashScreen (булево, по умолчанию true): Установите в false, чтобы предотвратить мерцание заставки запуска при изменении состояния отображения.
<preference name="FadeSplashScreen" value="false"/>
  • FadeSplashScreenDuration (вещественное число, по умолчанию 500): Указывает количество миллисекунд для выполнения эффекта плавного затухания заставки запуска.
<preference name="FadeSplashScreenDuration" value="750"/>

Примечание: FadeSplashScreenDuration включено в SplashScreenDelay, например, если у вас есть <preference name="SplashScreenDelay" value="3000" /> и <preference name="FadeSplashScreenDuration" value="1000"/> в config.xml:

  • 00:00 - отображается заставка запуска
  • 00:02 - началось затухание
  • 00:03 - заставка запуска скрыта

Отключение затухания с помощью <preference name="FadeSplashScreen" value="false"/> фактически означает, что продолжительность затухания равна 0, так что в этом примере общее время ожидания заставки запуска по-прежнему будет 3 секунды.

Примечание: Это относится только к запуску приложения — необходимо учитывать время затухания при ручном отображении/скрытии заставки запуска в коде:

navigator.splashscreen.show();
window.setTimeout(function () {
    navigator.splashscreen.hide();
}, splashDuration - fadeDuration);
  • ShowSplashScreenSpinner (булево, по умолчанию true): Установите в false, чтобы скрыть вращающийся индикатор заставки запуска.
<preference name="ShowSplashScreenSpinner" value="false"/>

Особенности Android

В вашем config.xml, вы можете добавить следующие настройки:

<preference name="SplashMaintainAspectRatio" value="true|false" />
<preference name="SplashShowOnlyFirstTime" value="true|false" />

Настройка "SplashMaintainAspectRatio" необязательна. Если установить её в значение true, изображение заставки запуска не будет растягиваться, чтобы заполнить экран, а вместо этого просто «покроет» экран, как в CSS "background-size:cover". Это очень полезно, когда изображения заставки запуска не могут быть искажены, например, когда они содержат пейзаж или текст. Эта настройка лучше всего работает с изображениями, имеющими большие отступы (безопасные области), которые могут быть безопасно обрезаны на экранах с разными соотношениями сторон.

Плагин перезагружает изображение заставки запуска при изменении ориентации, поэтому вы можете указать разные изображения для портретного и ландшафтного режимов.

Настройка "SplashShowOnlyFirstTime" также необязательна и по умолчанию равна true. При установке в true заставка запуска будет отображаться только при запуске приложения. Однако, если вы планируете использовать navigator.app.exitApp() для закрытия приложения и принудительного отображения заставки запуска при следующем запуске, вы должны установить это свойство в false (это также относится к закрытию приложения кнопкой «Назад»).

Особенности браузера

Вы можете использовать следующие настройки в config.xml:

<platform name="browser">
    <preference name="SplashScreen" value="/images/browser/splashscreen.jpg" /> <!-- defaults to "/img/logo.png" -->
    <preference name="SplashScreenDelay" value="3000" /> <!-- defaults to "3000" -->
    <preference name="SplashScreenBackgroundColor" value="green" /> <!-- defaults to "#464646" -->
    <preference name="ShowSplashScreen" value="false" /> <!-- defaults to "true" -->
    <preference name="SplashScreenWidth" value="600" /> <!-- defaults to "170" -->
    <preference name="SplashScreenHeight" value="300" /> <!-- defaults to "200" -->
</platform>

Примечание: значение SplashScreen должно быть абсолютным, чтобы работать на подстранице. Значение SplashScreen используется только для платформы браузера. Значение будет проигнорировано для других платформ.

Особенности iOS

  • В iOS изображения заставки запуска называются изображениями запуска. Эти изображения обязательны в iOS.

Особенности Windows

  • SplashScreenSpinnerColor (строка, по умолчанию системный цвет акцента): хэш, обозначение RGB или имя цвета CSS.
<preference name="SplashScreenSpinnerColor" value="#242424"/>
<preference name="SplashScreenSpinnerColor" value="DarkRed"/>
<preference name="SplashScreenSpinnerColor" value="rgb(50,128,128)"/>
  • SplashScreenBackgroundColor (строка, по умолчанию #464646): шестнадцатеричное обозначение.
<preference name="SplashScreenBackgroundColor" value="0xFFFFFFFF"/>

Методы

  • splashscreen.show
  • splashscreen.hide

splashscreen.hide

Скрыть заставку запуска.

navigator.splashscreen.hide();

Особенности BlackBerry 10, WP8, iOS

Значение настройки config.xml в файле AutoHideSplashScreen должно быть false. Чтобы отложить скрытие заставки запуска на две секунды, добавьте таймер, как показано ниже, в обработчик события deviceready:

setTimeout(function() {
    navigator.splashscreen.hide();
}, 2000);

splashscreen.show

Отобразить заставку запуска.

navigator.splashscreen.show();

Ваше приложение не может вызвать navigator.splashscreen.show() до тех пор, пока приложение не запустится и не будет сгенерировано событие deviceready. Но поскольку, как правило, экран загрузки должен быть виден до запуска вашего приложения, это противоречит цели экрана загрузки. Предоставление некоторой конфигурации в config.xml автоматически show экран загрузки сразу после запуска приложения и до того, как оно полностью запустится и получит событие deviceready. По этой причине маловероятно, что вам нужно вызывать navigator.splashscreen.show() для отображения экрана загрузки при запуске приложения.

© 2012, 2013, 2015 The Apache Software Foundation
Licensed under the Apache License 2.0.
https://cordova.apache.org/docs/en/6.x/reference/cordova-plugin-splashscreen/index.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API