Статьи

Создание прототипов для iOS и Android с помощью Framer: основы

В настоящее время вам не нужно программное обеспечение для редактирования изображений, такое как Adobe Photoshop или Gimp, чтобы создавать макеты пользовательского интерфейса для ваших мобильных приложений. Приложение, которое соответствует языку Google Material Design, обычно состоит только из простых геометрических фигур, сплошных цветов, значков и текста. Прототип пользовательского интерфейса для такого приложения может быть легко создан с использованием только кода.

В этой серии из двух частей вы познакомитесь с основами Framer , платформы Javascript с открытым исходным кодом, которая позволяет программно создавать интерактивные и реалистичные прототипы с красивой анимацией для приложений iOS и Android.

Чтобы следовать этому уроку, вам понадобится:

  • последняя сборка фреймворка Framer
  • Google Chrome или любой другой браузер на основе WebKit
  • Python 2.7 или выше
  • текстовый редактор
  • базовое понимание HTML, CSS и Javascript

Поскольку прототип Framer — это не что иное, как обычная веб-страница, написанная на HTML, CSS и Javascript, давайте начнем с создания пустой HTML-страницы. Я собираюсь назвать эту страницу index.html .

« `html <! doctype html>

« `

Чтобы использовать API Framer на этой странице, необходимо добавить тег script который указывает на загруженный файл framer.js .

html <script src="framer.js"></script>

Поскольку Framer использует URL-адреса, относящиеся к протоколу, для загрузки различных ресурсов, вы не можете просто дважды щелкнуть созданный вами файл, чтобы открыть его в браузере. Это приведет к ошибкам в сети. Вместо этого вы должны получить к нему доступ через HTTP-сервер.

Чтобы быстро создать HTTP-сервер, способный обслуживать вашу веб-страницу, вы можете использовать модуль Python SimpleHTTPServer .

Откройте терминал, перейдите в каталог, который содержит созданную вами веб-страницу, и выполните следующую команду.

bash python -m SimpleHTTPServer 8000

Это запустит сервер, который по умолчанию работает на порту 8000 . Теперь вы можете открыть Google Chrome и просмотреть свою веб-страницу, посетив http: // localhost: 8000 / .

Чтобы ваш прототип казался реалистичным в настольном браузере, вы должны отобразить все его элементы внутри рамки мобильного устройства. Framer позволяет рисовать различные популярные мобильные устройства, такие как iPhone, телефоны и планшеты Nexus, iPad, часы Apple Watch и многое другое. Для этого урока я буду использовать розовый iPhone 5c.

Чтобы нарисовать устройство, вы должны сначала создать экземпляр класса setupContext и вызвать его метод setupContext . Затем вы можете изменить его deviceType на устройство по вашему выбору. Добавьте еще один тег script на созданную ранее HTML-страницу и добавьте в нее следующий код:

« `javascript var device = new Framer.DeviceComponent ();

device.setupContext (); device.deviceType = «iphone-5c-pink»; « `

Когда вы обновляете свою веб-страницу, вы должны увидеть следующее в окне браузера:

Розовый iPhone 5c

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

« `javascript // Отображение руки с устройством device.deviceType =« iphone-5c-pink-hand »;

// Изменить размер device.setDeviceScale (0.3); « `

Это завершает первоначальную настройку. Результат должен выглядеть так:

айфон с руки

Почти каждый элемент в вашем прототипе Framer будет экземпляром класса Layer . Layer очень похож на HTML-элемент div и может использоваться для рисования прямоугольников, изображений и текста.

Чтобы создать Layer вы должны вызвать его конструктор и передать ему объект JSON, который определяет различные свойства Layer . При создании Layer вы обычно указываете его размеры ( width и height ) и положение ( x и y ). Вы также можете использовать методы centerX и centerY для centerY по горизонтали и вертикали. Вот пример того, как создать Layer .

« `javascript // Нарисовать белый квадрат

var whiteSquare = new Layer ({backgroundColor: «#FFFFFF», ширина: 400, высота: 400, y: 20});

// Центрировать горизонтально whiteSquare.centerX (); « `

Чтобы отобразить изображение, вы должны создать Layer , свойство image которого указывает на файл изображения, который вы хотите отобразить.

« `javascript // Рисуем изображение

var pic = new Layer ({image: «painting.jpg», ширина: 400, высота: 400, y: 440});

pic.centerX (); « `

Для отображения текста (или HTML) вы можете использовать свойство html . Вы также можете добавить CSS-стили к Layer используя его свойство style .

« `javascript // Написать текст

var text = new Layer ({width: Screen.width, height: 100, y: 860, html: «Это прототип», стиль: {fontSize: «50px», textAlign: «center», цвет: «# f1f2f3» ”, PaddingTop:“ 18px ”}}); « `

С тремя объектами Layer мы создали на этом шаге, прототип будет выглядеть так:

Три слоя

Вы можете прикрепить обработчики событий к Layer используя метод on . Метод on очень похож на метод addEventListener Javascript. Он принимает имя события в качестве первого параметра и функцию в качестве второго параметра.

Вот как вы добавляете обработчик click к text слою, который мы создали на предыдущем шаге:

javascript text.on("click", function(){ text.html = "I was clicked"; });

Вы увидите больше обработчиков событий позже в этом уроке.

Framer выделяется среди конкурентов благодаря продвинутым анимационным эффектам. С Framer вы можете анимировать практически каждое свойство ваших объектов Layer используя метод animate. Метод animate принимает в качестве входных данных объект JSON, который указывает свойства, которые должны быть анимированы.

Объект JSON также может включать в себя различные детали конфигурации анимации, например, ее продолжительность и поведение.

В качестве примера, позвольте мне показать вам, как создать анимацию, которая превращает whiteSquare в круг, изменяя его borderRadius .

« `javascript // Анимация borderRadius

whiteSquare.animate ({свойства: {borderRadius: whiteSquare.width / 2},

Вот еще один пример, который показывает, как анимировать тень whiteSquare при нажатии.

« `javascript // Анимированная тень

whiteSquare.on («клик», функция () {

Обратите внимание, что только те свойства, значения которых являются числами, могут быть анимированы. Поскольку shadowColor не является числом, его следует установить перед вызовом animate .

Если вы используете Framer, вполне вероятно, что вы пытаетесь создать интерактивный прототип с большим количеством анимаций. Многократный вызов метода animate в Layer может быть утомительным. Вместо этого вы можете связать список состояний со Layer и просто переключаться между состояниями при необходимости.

Каждый Layer имеет свойство states которое является экземпляром класса LayerStates . Чтобы добавить новые состояния в Layer , вы вызываете метод add для свойства States. В следующем фрагменте кода мы добавляем два новых состояния в объект pic .

« `javascript // Добавить два состояния

pic.states.add ({«myState1»: {borderRadius: 100},

Добавление состояния не приводит к немедленному визуальному изменению. Однако, когда Layer переключается из одного состояния в другое, вы сможете увидеть анимацию. Чтобы изменить состояние Layer , вы вызываете метод switch для свойства states объекта Layer . В следующем фрагменте кода показано, как изменить состояние изображения при нажатии.

« `javascript // Изменение состояния при нажатии

pic.on («click», function () {// Переключиться на myState2 pic.states.switch («myState2»);}); « `

Чтобы переключаться между состояниями Layer , вы можете вызвать next метод объекта states .

javascript pic.states.next();

Чтобы добавить цвет фона или изображение в ваш прототип, вы создаете объект BackgroundLayer . BackgroundLayer — это Layer , размеры которого равны размерам экрана устройства. Вот как вы добавляете серый BackgroundLayer :

javascript var bg = new BackgroundLayer({ backgroundColor: "#BDBDBD" });

Поскольку прототип Framer — это обычная HTML-страница, вы также можете использовать CSS для ее стилизации. Например, если вас не устраивает белый цвет, окружающий устройство, вы можете изменить его, применив новый стиль к тегу body веб-страницы.

« « HTML

« `

С этими изменениями прототип будет выглядеть так, когда анимация закончится:

Конечное состояние

Чтобы сделать Layer перетаскиваемым, все, что вам нужно сделать, это установить для его свойства draggable.enabled значение true .

« `javascript // Разрешить перетаскивание

pic.draggable.enabled = true; « `

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

« `javascript // Обработка драгенд

pic.on («dragend», function () {pic.animate ({«properties»: {x: Screen.width / 2 — pic.width / 2, // Поместить в центр y: 440 // Исходный Y}} );}); « `

В этом уроке вы узнали основы создания интерактивных прототипов для мобильных приложений с использованием Framer. Поскольку ваши прототипы Framer являются статическими веб-страницами, вы можете загрузить их на любой HTTP-сервер, чтобы поделиться ими с друзьями и клиентами.

Я также хотел бы сказать вам, что, если вы компетентны с Adobe Photoshop, вам не нужно создавать элементы пользовательского интерфейса ваших прототипов программно. Вы можете создать макет в Photoshop и преобразовать группы слоев в PSD в объекты Layer Framer. У вас также есть возможность приобрести и использовать Framer Studio , IDE, созданную специально для работы с проектами Framer.

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