Сложные приёмы разработки приложений для Windows Phone 8

Шаблоны проектов, структура проектов

Разбить на страницы
Показывать лекцию целиком

Цель работы: научиться работать с проектами приложений для Windows Phone в Visual Studio 2012

Особенности проектов приложений для Windows Phone

Первый шаг в построении приложения для Windows Phone заключается в выборе подходящего языка программирования, на котором будет вестись разработка, и типа проекта. На рис. 7.1. приведено окно создания проекта из Visual Studio.

(рис 7.1) Окно Создать проект в Visual Studio

Можно отметить, что состав доступных проектов на Visual C# и Visual Basic совпадает (за исключением проекта Приложение модульного тестирования Windows Phone, который доступен только на C#). Это – проекты, на основе которых можно создать основную часть Windows Phone-приложений, и, в том числе – игровые приложения, использующие Direct 3D, XNA-игры, которые всё еще можно разрабатывать в расчёте на Windows Phone 7, и, хотя Windows Phone 8-устройства могут исполнять такие приложения, их создание специально для платформы Windows Phone 8 не предусмотрено.

Шаблоны проектов, предусматривающие использование Visual C++ ориентированы на разработку Direct3D-приложений, обычно это игры, и на создание высокопроизводительных компонентов среды выполнения Windows Phone.

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

Для Visual C# и Visual Basic это следующие:

Раздел Windows Phone

  • Приложение Windows Phone. Шаблон одностраничного приложения с интерфейсом, построенным на основе XAML.
  • Приложение Windows Phone с привязкой к данным. Шаблон приложения, который реализует простую MVVM-архитектуру
  • Библиотека классов Windows Phone. Этот шаблон позволяет создавать библиотеки классов. У библиотек классов нет собственного графического интерфейса, их можно использовать в других приложениях.
  • Приложение Windows Phone с панорамой. Шаблон приложения, где по умолчанию используется элемент управления Panorama. Этот элемент управления нередко используют для создания начальных страниц приложений, примеры его использования можно встретить в стандартных системных приложениях Windows Phone, в различных хабах. Он представляет собой вертикальное полотно, поддерживающее прокрутку, логический размер которого равен нескольким экранам телефона.
  • Приложение Windows Phone Pivot. При помощи этого шаблона можно создать приложение с интерфейсом, основанным на элементе управления Pivot. Данный элемент управления предусматривает наличие нескольких разделов, заголовки которых выводятся в верхней части страницы. В таком стиле, например, оформлены настройки Windows Phone.
  • Приложение Windows Phone на базе XAML и XNA. Позволяет создавать комбинированные приложения, преимущественно – игровые, интерфейсные части которых можно создать, используя XAML-разметку, а основную функциональность реализовать с помощью инструментов XNA.
  • Приложение Windows Phone с XAML и Direct3D. Предназначен для создания комбинированных приложений, преимущественно – игр, интерфейсная часть которых может быть выполнена с использованием XAML-разметки, а основной функционал предусматривает использование Direct3D
  • Приложение модульного тестирования Windows Phone (только Visual C#). Модульное тестирование широко применяется в разработке программного обеспечения, использование модульных тестов позволяет сократить число ошибок в разрабатываемой программной системе, упрощает поддержку кода. Данный шаблон доступен для среды Windows Phone-разработки после установки Visual Studio 2012 Обновление 2.
  • Приложение Windows Phone HTML5. Этот шаблон предусматривает построение приложений, интерфейсная часть которых создана с помощью HTML5-разметки. Фактически, в приложении, созданном по этому шаблону присутствует стандартная инфраструктура на основе XAML и элемент управления WebBrowser, который используется для отображения HTML-страниц приложения (с поддержкой JavaScript).
  • Агент воспроизведения звука Windows Phone. При использовании данного шаблона создаётся библиотека классов, которая используется для организации фонового воспроизведения звука на основе плейлиста, при учете поддержки системой форматов звуковых файлов, включенных в плей-лист. Используется для добавления в приложения Windows Phone, которые нуждаются в подобной функциональности.
  • Агент потоковой передачи звука Windows Phone. С помощью этого шаблона можно создать библиотеку для организации потоковой передачи звука в систему воспроизведения аудиосигнала устройства. С помощью агента потоковой передачи звука, например, можно организовать фоновое воспроизведение звуковых файлов, форматы которых не поддерживаются на уровне системы, либо – достичь большей гибкости и больших возможностей в управлении потоком.
  • Агент запланированных заданий Windows Phone. Предназначен для создания библиотек, которые используются для организации фонового выполнения запланированных заданий. Эти задания можно разделить на два вида. Первый – обычные периодически выполняемые задачи (Periodic tasks), на выполнение которых выделяется 25 секунд каждые 30 минут, при условии, что телефон не пребывает в режиме экономии энергии. Второй – задачи, требовательные к системным ресурсам (Resource-intensive task), они исполняются при особых условиях, в частности, телефон должен быть подключен к зарядному устройству, пользователь не должен работать с ним. Подобные задачи используются, например, для целей синхронизации больших объемов данных с сетевыми службами.
  • Раздел XNA GameStudio 4.0

  • Игра для Windows Phone (4.0.). Предназначен для создания игр и других приложений на основе XNA GameStudio 4.0.
  • Игровая библиотека для Windows Phone (4.0.). С помощью этого шаблона можно создать игровую библиотеку.
  • Библиотека расширения конвейера контента (4.0). Этот шаблон используется для создания расширений конвейера контента (Content Pipeline)
  • Пустой проект контента (4.0.). Этот шаблон используется для создания проектов для XNA-контента
  • Для Visual C++ это следующие типы проектов, собранные в одном разделе:

    Windows Phone

  • Приложение Windows Phone Direct3D с XAML.
  • Приложение Windows Phone с Direct3D (только машинный код).
  • Приложение модульного тестирования Windows Phone.
  • Пустая библиотека динамической компоновки Windows Phone
  • Пустая статическая библиотека Windows Phone
  • Рассмотрим структуру проекта, основанного на шаблоне Приложение Windows Phone для Visual C#. Понимание структуры этого проекта, во-первых, заложит основы, необходимые для разработки любых приложений для Windows Phone, во-вторых, даст ключ к пониманию устройства других проектов.

    Структура проекта приложения для Windows Phone

    На рис. 7.2. приведено окно Visual Studio для проекта, созданного по шаблону Приложение Windows Phone, в качестве целевой платформы при создании данного проекта выбрана Windows Phone OS 8.0.. Здесь и далее по умолчанию подразумевается, что речь идёт именно об этой целевой платформе. В некоторых случаях мы будем касаться и Windows Phone 7, тогда это будет отмечено особо.

    (рис 7.2) Проект приложения, созданный по шаблону Приложение Windows Phone

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

    MainPage.xaml и сопутствующий ему файл кода Mainpage.xaml.cs – это стартовая страница нашего приложения. Она отобразится при его запуске. Именно здесь размещают элементы управления. Название этого файла может быть любым, однако, для того, чтобы именно он был открыт при старте приложения, его имя должно быть записано в параметр Страница навигации в файле WMAppManifest.xml.

    В XAML-коде файла описывается макет страницы, здесь производятся различные настройки. В частности, в заголовочной части разметки можно задать поддерживаемые ориентации экрана (по умолчанию – портретная ориентация, SupportedOrientations="Portrait") и ориентацию, в которой начальная страница приложения оказывается после его запуска (Orientation="Portrait"). Здесь же по умолчанию заданы некоторые ресурсы, которые соответствуют ресурсам Windows Phone. Например, благодаря использованию данного объявления: Foreground="{StaticResource PhoneForegroundBrush}" фон страницы (или других элементов, если для них данное свойство не переопределено) будет соответствовать цвету фона (светлому или тёмному), выбранному в системе.

    Содержимое страницы по умолчанию размещено в элементе управления Grid (сетка) с именем LayoutRoot. При стандартном размещении элементов в верхней части страницы выводится название приложения, ниже идёт название страницы (эти элементы организованы с помощью элемента управления StackPanel (стек-панель) с именем TitlePanel) оставшаяся область предназначена для другого содержимого – здесь размещена пустая сетка с именем ContentPanel. Это – лишь рекомендуемое устройство страницы, от которого, если это продиктовано обоснованными причинами, вполне можно отступать.

    Для того, чтобы во время работы над дизайном страниц придерживаться стандартного расположения элементов управления по сетке, можно раскомментировать соответствующий участок разметки (<!--<Image Source="/Assets/AlignmentGrid.png" VerticalAlignment="Top" Height="800" Width="480" Margin="0,-32,0,0" Grid.Row="0" Grid.RowSpan="2" IsHitTestVisible="False" />-->). Он выводит на страницу изображение сетки для выравнивания элементов, AlignmentGrid.png, расположенное в папке Assets. В коде страницы есть пояснительные комментарии по этому поводу. В частности они говорят о том, что и данный код, и само изображение, нужно удалить из готового приложения перед отправкой в Магазин Windows Phone. Подобной стратегии следует придерживаться и при работе с другим кодом или ресурсами, которые используются как вспомогательные в ходе разработки и не нужны в готовом приложении.

    Если на страницу нужно добавить панель приложения (объект ), это так же выполняется в XAML-коде страницы. Работать с XAML-кодом нужно будет и при локализации приложения.

    В файле MainPage.xaml.cs содержится программный код для соответствующей страницы. Обычно здесь располагается код для обработчиков событий элементов страниц (кнопок, переключателей), код для обработки событий перехода по страницам. Здесь, чисто технически, может быть расположен любой код, но на практике сюда обычно включают минимум кода, необходимый для обеспечения функционирования интерфейса страницы, вынося основную логику во внешние классы, что облегчает тестирование и поддержку приложения. Идея о разделении интерфейсных механизмов и программной логики приложения нашла развитие в шаблоне проектирования MVVM.

    В исходном файле содержится лишь конструктор, в нем вызывается метод InitializeComponent(), код метода расположен в автоматически генерируемом системой файле MainPage.g.i.cs, посмотреть его можно, если вызвать контекстное меню для строки InitializeComponent() и выбрать там команду Перейти к определению (или клавишу F12). Файл не предназначен для ручного редактирования, однако, его анализ может помочь в решении проблем. Проблемы могут быть вызваны ошибками в соответствующем XAML-файле.

    Как уже было сказано, при запуске приложения для Windows Phone 8 по умолчанию открывается MainPage.xaml Если говорить о запуске приложения, то в ходе этого процесса можно отображать экран-заставку (подробности об экранах-заставках можно найти здесь: http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff769511%28v=vs.105%29.aspx). Как правило, если речь идёт о приложении, которое запускается очень быстро, от экрана-заставки можно отказаться. Более того, такой подход удобнее с точки зрения пользователя – подобное поведение программы, особенно, если она нацелена на решение какой-нибудь часто возникающей практической задачи, меньше утомляет пользователя. И, хотя на экране-заставке можно отобразить какие-либо сведения о разработчике, возможно – с целью привлечь пользователя к другим приложениям, следует проанализировать необходимость включения экрана-заставки в проект, если без него можно обойтись.

    В проект приложения, рассчитанного на Windows Phone 8, не входит изображение для экрана-заставки, если в нём есть необходимость, его можно добавить в корневой раздел проекта, назвав SplashScreenImage.jpg. Для того, чтобы добавить подобный файл в проект, сначала нужно создать его в каком-нибудь внешнем приложении (в нашем случае создано изображение размером 480х800), затем сохранить в формате jpg, после чего, вызвав в Visual Studio контекстное меню проекта, выбрать в нём команду Добавить > Существующий элемент. Будет открыто окно Добавление существующего элемента, где нужно выбрать созданный файл. Обратите внимание на то, что в свойствах этого файла параметр Действие при построении должен быть установлен в значение Содержание. Когда в проект добавлен подобный файл (рис. 7.3), запуск приложения будет сопровождаться показом экрана-заставки.

    (рис 7.3) Структура проекта после добавления файла экрана-заставки

    Для того, чтобы экран-заставка наилучшим образом выглядел на всех устройствах, на которое рассчитано приложение, его размеры должны соответствовать разрешениям их экранов. И хотя допустимо наличие лишь одного файла, о котором мы говорили выше, и который масштабируется автоматически, желательно создать различные файлы экранов-заставок для каждого из разрешений. Как правило, приложения ориентируют на все существующие разрешения дисплеев, то есть, фактически, нам понадобятся экраны-заставки размером 480х800 (WVGA), 768х1280 (WXGA) и 720х1280 (720p). Для того чтобы оснастить приложение такими экранами-заставками, в корневом разделе проекта можно разместить следующие файлы, в именах которых, перед расширением, присутствуют суффиксы, указывающие на размер экрана, для которого предназначен данный файл: SplashScreenImage.screen-WVGA.jpg, SplashScreenImage.screen-WXGA.jpg, SplashScreenImage.screen-720p.jpg. Система автоматически обрабатывает подобные суффиксы, выбирая тот, который подходит для разрешения дисплея устройства, на котором выполняется приложение. В данном случае имена файлов имеют значение, так как именно ориентируясь на них система использует те или иные файлы.

    Файл App.xaml используется для хранения параметров, данных, настроек уровня приложения, соответствующий ему файл кода App.xaml.cs отвечает за инициализацию приложения, за обработку событий и ошибок уровня приложения. Если в приложении используются некие параметры и хранимые между вызовами приложения в постоянной памяти, обычно их объявляют, выполняют их загрузку и сохранение именно здесь. Здесь же обычно размещают код для проверки лицензии приложения, если оно предусматривает наличие пробной версии.

    В папке ).

    Папка Assets хранит графические ресурсы, в частности, уже упомянутый вспомогательный файл AlignmentGrid.png, значок приложения, который будет отображаться в списке приложений (ApplicationIcon.png), набор заготовок для различных плиток приложения, которые отображаются на домашнем экране (в подпапке Tiles).

    Папка References содержит ссылки на библиотеки, используемые приложением, по умолчанию здесь есть ссылки на библиотеки .NET for Windows Phone и Windows Phone. Состав библиотек, необходимых приложению, можно расширять, если для его работы требуются какие-либо дополнительные возможности, или возможности, реализацию которых в сторонних библиотеках разработчик предпочитает стандартной реализации.

    В папке ) хранит настройки приложения, уникальные для платформы Windows Phone. Для редактирования этого файла можно пользоваться двумя подходами: непосредственным редактированием кода файла, либо – использованием специального редактора. При двойном щелчке по этому файлу открывается Конструктор манифеста, рис. 7.4.

    (рис 7.4) Конструктор Манифеста приложения

    Он содержит следующие четыре закладки:

    Интерфейс приложения. Здесь можно настраивать параметры, касающиеся внешнего вида приложения, в том числе – уже упомянутый параметр Страница навигации, который задаёт стартовую страницу приложения, Отображаемое имя – имя приложения, видное пользователю, здесь можно задать значок приложения, поддерживаемые им разрешения, настроить параметры плиток (здесь они названы иконками).

    ). Например, в приложении, которое нуждается для работы в основной камере устройства, должна быть объявлена возможность ID_CAP_ISV_CAMERA.

    Требования. Здесь можно указать аппаратные требования, которые необходимы приложению. В частности, аппаратные требования к устройствам, работающим на ОС Windows Phone, хотя и довольно жёстко определяют их конфигурацию, содержат и условия, реализация которых зависит от решения производителя устройства. Например, к таким условиям относится наличие NFC-датчика (ему соответствует требование ID_REQ_NFC), наличие камеры (наличие основной камеры является фактическим стандартом, хотя и для проверки её наличия имеется требование ID_REQ_REARCAMERA, а передняя камера в некоторых телефонах отсутствует, если без её наличия приложение не должно устанавливаться на устройство, можно использовать требование ID_REQ_FRONTCAMERA).

    Упаковка. Здесь содержатся сведения об авторе, издателе, версии приложения. Здесь же можно задать язык по умолчанию и указать список языков, поддерживаемых приложением.

    Конструктор Манифеста, хотя и обладает достаточными для большинства нужд возможностями, не предоставляет полной свободы в редактировании файла-манифеста. В частности, например, если нашему приложению нужно более 180 Мб оперативной памяти, то есть, фактически, мы ориентируем его на устройства с не менее чем 1 Гб ОЗУ, в манифест стоит включить аппаратное требование ID_REQ_MEMORY_300. Подобного пункта в редакторе манифеста нет, для того, чтобы внести это требование в манифест, нужно вызвать контекстное меню файла WMAppManifest.xml, выбрать в нём команду Перейти к коду, после чего самостоятельно отредактировать файл манифеста. В данном случае, внести соответствующее требование в раздел файла Requirements, рис. 5.

    (рис 7.5) Редактирование файла WMAppManifest.xml в редакторе кода

    Обратите внимание на то, что приложение с включением подобного требования, при отладке его в эмуляторе, не запустится в эмуляторе, имитирующем устройство, имеющее 512 МБ ОЗУ

    Выводы

    В этой лекции вы ознакомились с основными особенностями шаблонов проектов приложений для Windows Phone 8 и изучили особенности устройства проекта приложения, созданного по шаблону Приложение Windows Phone, рассчитанного на платформу Windows Phone OS 8.0. Вы узнали о структуре и назначении основных файлов проекта, об использовании экранов-заставок, о роли и особенностях файла-манифеста приложения для Windows Phone.

    Задание

    Создайте проект приложения по шаблону Приложение Windows Phone 8, рассчитанный на платформу Windows Phone 8, добавьте в него новую страницу и настройте проект так, чтобы именно эта страница, а не MainPage.xaml, вызывалась при запуске приложения. Используя несколько графических файлов, подходящих для формирования экрана-заставки на экранах разрешений 480х800 (WVGA), 768х1280 (WXGA) и 720х1280 (720p), добейтесь того, чтобы приложение отображало различные экраны-заставки при запуске на эмуляторах с различным разрешением экрана. Изучите раздел Возможности файла-манифеста приложения для Windows Phone, выясните назначение различных возможностей, которые можно устанавливать для приложения, пользуясь пояснениями и ссылками на документацию, которые приводятся в редакторе манифеста. Выберите 5 любых возможностей и подготовьте развёрнутое сообщение с их описанием.

    Дополнительные материалы

    К данной лекции подготовлено видеоприложение и демонстрационный программный проект.

    Страницы:

    Цель работы: научиться работать с проектами приложений для Windows Phone в Visual Studio 2012

    Особенности проектов приложений для Windows Phone

    Первый шаг в построении приложения для Windows Phone заключается в выборе подходящего языка программирования, на котором будет вестись разработка, и типа проекта. На рис. 7.1. приведено окно создания проекта из Visual Studio.

    (рис 7.1) Окно Создать проект в Visual Studio

    Можно отметить, что состав доступных проектов на Visual C# и Visual Basic совпадает (за исключением проекта Приложение модульного тестирования Windows Phone, который доступен только на C#). Это – проекты, на основе которых можно создать основную часть Windows Phone-приложений, и, в том числе – игровые приложения, использующие Direct 3D, XNA-игры, которые всё еще можно разрабатывать в расчёте на Windows Phone 7, и, хотя Windows Phone 8-устройства могут исполнять такие приложения, их создание специально для платформы Windows Phone 8 не предусмотрено.

    Шаблоны проектов, предусматривающие использование Visual C++ ориентированы на разработку Direct3D-приложений, обычно это игры, и на создание высокопроизводительных компонентов среды выполнения Windows Phone.

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

    Для Visual C# и Visual Basic это следующие:

    Раздел Windows Phone

  • Приложение Windows Phone. Шаблон одностраничного приложения с интерфейсом, построенным на основе XAML.
  • Приложение Windows Phone с привязкой к данным. Шаблон приложения, который реализует простую MVVM-архитектуру
  • Библиотека классов Windows Phone. Этот шаблон позволяет создавать библиотеки классов. У библиотек классов нет собственного графического интерфейса, их можно использовать в других приложениях.
  • Приложение Windows Phone с панорамой. Шаблон приложения, где по умолчанию используется элемент управления Panorama. Этот элемент управления нередко используют для создания начальных страниц приложений, примеры его использования можно встретить в стандартных системных приложениях Windows Phone, в различных хабах. Он представляет собой вертикальное полотно, поддерживающее прокрутку, логический размер которого равен нескольким экранам телефона.
  • Приложение Windows Phone Pivot. При помощи этого шаблона можно создать приложение с интерфейсом, основанным на элементе управления Pivot. Данный элемент управления предусматривает наличие нескольких разделов, заголовки которых выводятся в верхней части страницы. В таком стиле, например, оформлены настройки Windows Phone.
  • Приложение Windows Phone на базе XAML и XNA. Позволяет создавать комбинированные приложения, преимущественно – игровые, интерфейсные части которых можно создать, используя XAML-разметку, а основную функциональность реализовать с помощью инструментов XNA.
  • Приложение Windows Phone с XAML и Direct3D. Предназначен для создания комбинированных приложений, преимущественно – игр, интерфейсная часть которых может быть выполнена с использованием XAML-разметки, а основной функционал предусматривает использование Direct3D
  • Приложение модульного тестирования Windows Phone (только Visual C#). Модульное тестирование широко применяется в разработке программного обеспечения, использование модульных тестов позволяет сократить число ошибок в разрабатываемой программной системе, упрощает поддержку кода. Данный шаблон доступен для среды Windows Phone-разработки после установки Visual Studio 2012 Обновление 2.
  • Приложение Windows Phone HTML5. Этот шаблон предусматривает построение приложений, интерфейсная часть которых создана с помощью HTML5-разметки. Фактически, в приложении, созданном по этому шаблону присутствует стандартная инфраструктура на основе XAML и элемент управления WebBrowser, который используется для отображения HTML-страниц приложения (с поддержкой JavaScript).
  • Агент воспроизведения звука Windows Phone. При использовании данного шаблона создаётся библиотека классов, которая используется для организации фонового воспроизведения звука на основе плейлиста, при учете поддержки системой форматов звуковых файлов, включенных в плей-лист. Используется для добавления в приложения Windows Phone, которые нуждаются в подобной функциональности.
  • Агент потоковой передачи звука Windows Phone. С помощью этого шаблона можно создать библиотеку для организации потоковой передачи звука в систему воспроизведения аудиосигнала устройства. С помощью агента потоковой передачи звука, например, можно организовать фоновое воспроизведение звуковых файлов, форматы которых не поддерживаются на уровне системы, либо – достичь большей гибкости и больших возможностей в управлении потоком.
  • Агент запланированных заданий Windows Phone. Предназначен для создания библиотек, которые используются для организации фонового выполнения запланированных заданий. Эти задания можно разделить на два вида. Первый – обычные периодически выполняемые задачи (Periodic tasks), на выполнение которых выделяется 25 секунд каждые 30 минут, при условии, что телефон не пребывает в режиме экономии энергии. Второй – задачи, требовательные к системным ресурсам (Resource-intensive task), они исполняются при особых условиях, в частности, телефон должен быть подключен к зарядному устройству, пользователь не должен работать с ним. Подобные задачи используются, например, для целей синхронизации больших объемов данных с сетевыми службами.
  • Раздел XNA GameStudio 4.0

  • Игра для Windows Phone (4.0.). Предназначен для создания игр и других приложений на основе XNA GameStudio 4.0.
  • Игровая библиотека для Windows Phone (4.0.). С помощью этого шаблона можно создать игровую библиотеку.
  • Библиотека расширения конвейера контента (4.0). Этот шаблон используется для создания расширений конвейера контента (Content Pipeline)
  • Пустой проект контента (4.0.). Этот шаблон используется для создания проектов для XNA-контента
  • Для Visual C++ это следующие типы проектов, собранные в одном разделе:

    Windows Phone

  • Приложение Windows Phone Direct3D с XAML.
  • Приложение Windows Phone с Direct3D (только машинный код).
  • Приложение модульного тестирования Windows Phone.
  • Пустая библиотека динамической компоновки Windows Phone
  • Пустая статическая библиотека Windows Phone
  • Рассмотрим структуру проекта, основанного на шаблоне Приложение Windows Phone для Visual C#. Понимание структуры этого проекта, во-первых, заложит основы, необходимые для разработки любых приложений для Windows Phone, во-вторых, даст ключ к пониманию устройства других проектов.

    Структура проекта приложения для Windows Phone

    На рис. 7.2. приведено окно Visual Studio для проекта, созданного по шаблону Приложение Windows Phone, в качестве целевой платформы при создании данного проекта выбрана Windows Phone OS 8.0.. Здесь и далее по умолчанию подразумевается, что речь идёт именно об этой целевой платформе. В некоторых случаях мы будем касаться и Windows Phone 7, тогда это будет отмечено особо.

    (рис 7.2) Проект приложения, созданный по шаблону Приложение Windows Phone

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

    MainPage.xaml и сопутствующий ему файл кода Mainpage.xaml.cs – это стартовая страница нашего приложения. Она отобразится при его запуске. Именно здесь размещают элементы управления. Название этого файла может быть любым, однако, для того, чтобы именно он был открыт при старте приложения, его имя должно быть записано в параметр Страница навигации в файле WMAppManifest.xml.

    В XAML-коде файла описывается макет страницы, здесь производятся различные настройки. В частности, в заголовочной части разметки можно задать поддерживаемые ориентации экрана (по умолчанию – портретная ориентация, SupportedOrientations="Portrait") и ориентацию, в которой начальная страница приложения оказывается после его запуска (Orientation="Portrait"). Здесь же по умолчанию заданы некоторые ресурсы, которые соответствуют ресурсам Windows Phone. Например, благодаря использованию данного объявления: Foreground="{StaticResource PhoneForegroundBrush}" фон страницы (или других элементов, если для них данное свойство не переопределено) будет соответствовать цвету фона (светлому или тёмному), выбранному в системе.

    Содержимое страницы по умолчанию размещено в элементе управления Grid (сетка) с именем LayoutRoot. При стандартном размещении элементов в верхней части страницы выводится название приложения, ниже идёт название страницы (эти элементы организованы с помощью элемента управления StackPanel (стек-панель) с именем TitlePanel) оставшаяся область предназначена для другого содержимого – здесь размещена пустая сетка с именем ContentPanel. Это – лишь рекомендуемое устройство страницы, от которого, если это продиктовано обоснованными причинами, вполне можно отступать.

    Для того, чтобы во время работы над дизайном страниц придерживаться стандартного расположения элементов управления по сетке, можно раскомментировать соответствующий участок разметки (<!--<Image Source="/Assets/AlignmentGrid.png" VerticalAlignment="Top" Height="800" Width="480" Margin="0,-32,0,0" Grid.Row="0" Grid.RowSpan="2" IsHitTestVisible="False" />-->). Он выводит на страницу изображение сетки для выравнивания элементов, AlignmentGrid.png, расположенное в папке Assets. В коде страницы есть пояснительные комментарии по этому поводу. В частности они говорят о том, что и данный код, и само изображение, нужно удалить из готового приложения перед отправкой в Магазин Windows Phone. Подобной стратегии следует придерживаться и при работе с другим кодом или ресурсами, которые используются как вспомогательные в ходе разработки и не нужны в готовом приложении.

    Если на страницу нужно добавить панель приложения (объект ), это так же выполняется в XAML-коде страницы. Работать с XAML-кодом нужно будет и при локализации приложения.

    В файле MainPage.xaml.cs содержится программный код для соответствующей страницы. Обычно здесь располагается код для обработчиков событий элементов страниц (кнопок, переключателей), код для обработки событий перехода по страницам. Здесь, чисто технически, может быть расположен любой код, но на практике сюда обычно включают минимум кода, необходимый для обеспечения функционирования интерфейса страницы, вынося основную логику во внешние классы, что облегчает тестирование и поддержку приложения. Идея о разделении интерфейсных механизмов и программной логики приложения нашла развитие в шаблоне проектирования MVVM.

    В исходном файле содержится лишь конструктор, в нем вызывается метод InitializeComponent(), код метода расположен в автоматически генерируемом системой файле MainPage.g.i.cs, посмотреть его можно, если вызвать контекстное меню для строки InitializeComponent() и выбрать там команду Перейти к определению (или клавишу F12). Файл не предназначен для ручного редактирования, однако, его анализ может помочь в решении проблем. Проблемы могут быть вызваны ошибками в соответствующем XAML-файле.

    Как уже было сказано, при запуске приложения для Windows Phone 8 по умолчанию открывается MainPage.xaml Если говорить о запуске приложения, то в ходе этого процесса можно отображать экран-заставку (подробности об экранах-заставках можно найти здесь: http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff769511%28v=vs.105%29.aspx). Как правило, если речь идёт о приложении, которое запускается очень быстро, от экрана-заставки можно отказаться. Более того, такой подход удобнее с точки зрения пользователя – подобное поведение программы, особенно, если она нацелена на решение какой-нибудь часто возникающей практической задачи, меньше утомляет пользователя. И, хотя на экране-заставке можно отобразить какие-либо сведения о разработчике, возможно – с целью привлечь пользователя к другим приложениям, следует проанализировать необходимость включения экрана-заставки в проект, если без него можно обойтись.

    В проект приложения, рассчитанного на Windows Phone 8, не входит изображение для экрана-заставки, если в нём есть необходимость, его можно добавить в корневой раздел проекта, назвав SplashScreenImage.jpg. Для того, чтобы добавить подобный файл в проект, сначала нужно создать его в каком-нибудь внешнем приложении (в нашем случае создано изображение размером 480х800), затем сохранить в формате jpg, после чего, вызвав в Visual Studio контекстное меню проекта, выбрать в нём команду Добавить > Существующий элемент. Будет открыто окно Добавление существующего элемента, где нужно выбрать созданный файл. Обратите внимание на то, что в свойствах этого файла параметр Действие при построении должен быть установлен в значение Содержание. Когда в проект добавлен подобный файл (рис. 7.3), запуск приложения будет сопровождаться показом экрана-заставки.

    (рис 7.3) Структура проекта после добавления файла экрана-заставки

    Для того, чтобы экран-заставка наилучшим образом выглядел на всех устройствах, на которое рассчитано приложение, его размеры должны соответствовать разрешениям их экранов. И хотя допустимо наличие лишь одного файла, о котором мы говорили выше, и который масштабируется автоматически, желательно создать различные файлы экранов-заставок для каждого из разрешений. Как правило, приложения ориентируют на все существующие разрешения дисплеев, то есть, фактически, нам понадобятся экраны-заставки размером 480х800 (WVGA), 768х1280 (WXGA) и 720х1280 (720p). Для того чтобы оснастить приложение такими экранами-заставками, в корневом разделе проекта можно разместить следующие файлы, в именах которых, перед расширением, присутствуют суффиксы, указывающие на размер экрана, для которого предназначен данный файл: SplashScreenImage.screen-WVGA.jpg, SplashScreenImage.screen-WXGA.jpg, SplashScreenImage.screen-720p.jpg. Система автоматически обрабатывает подобные суффиксы, выбирая тот, который подходит для разрешения дисплея устройства, на котором выполняется приложение. В данном случае имена файлов имеют значение, так как именно ориентируясь на них система использует те или иные файлы.

    Файл App.xaml используется для хранения параметров, данных, настроек уровня приложения, соответствующий ему файл кода App.xaml.cs отвечает за инициализацию приложения, за обработку событий и ошибок уровня приложения. Если в приложении используются некие параметры и хранимые между вызовами приложения в постоянной памяти, обычно их объявляют, выполняют их загрузку и сохранение именно здесь. Здесь же обычно размещают код для проверки лицензии приложения, если оно предусматривает наличие пробной версии.

    В папке ).

    Папка Assets хранит графические ресурсы, в частности, уже упомянутый вспомогательный файл AlignmentGrid.png, значок приложения, который будет отображаться в списке приложений (ApplicationIcon.png), набор заготовок для различных плиток приложения, которые отображаются на домашнем экране (в подпапке Tiles).

    Папка References содержит ссылки на библиотеки, используемые приложением, по умолчанию здесь есть ссылки на библиотеки .NET for Windows Phone и Windows Phone. Состав библиотек, необходимых приложению, можно расширять, если для его работы требуются какие-либо дополнительные возможности, или возможности, реализацию которых в сторонних библиотеках разработчик предпочитает стандартной реализации.

    В папке ) хранит настройки приложения, уникальные для платформы Windows Phone. Для редактирования этого файла можно пользоваться двумя подходами: непосредственным редактированием кода файла, либо – использованием специального редактора. При двойном щелчке по этому файлу открывается Конструктор манифеста, рис. 7.4.

    (рис 7.4) Конструктор Манифеста приложения

    Он содержит следующие четыре закладки:

    Интерфейс приложения. Здесь можно настраивать параметры, касающиеся внешнего вида приложения, в том числе – уже упомянутый параметр Страница навигации, который задаёт стартовую страницу приложения, Отображаемое имя – имя приложения, видное пользователю, здесь можно задать значок приложения, поддерживаемые им разрешения, настроить параметры плиток (здесь они названы иконками).

    ). Например, в приложении, которое нуждается для работы в основной камере устройства, должна быть объявлена возможность ID_CAP_ISV_CAMERA.

    Требования. Здесь можно указать аппаратные требования, которые необходимы приложению. В частности, аппаратные требования к устройствам, работающим на ОС Windows Phone, хотя и довольно жёстко определяют их конфигурацию, содержат и условия, реализация которых зависит от решения производителя устройства. Например, к таким условиям относится наличие NFC-датчика (ему соответствует требование ID_REQ_NFC), наличие камеры (наличие основной камеры является фактическим стандартом, хотя и для проверки её наличия имеется требование ID_REQ_REARCAMERA, а передняя камера в некоторых телефонах отсутствует, если без её наличия приложение не должно устанавливаться на устройство, можно использовать требование ID_REQ_FRONTCAMERA).

    Упаковка. Здесь содержатся сведения об авторе, издателе, версии приложения. Здесь же можно задать язык по умолчанию и указать список языков, поддерживаемых приложением.

    Конструктор Манифеста, хотя и обладает достаточными для большинства нужд возможностями, не предоставляет полной свободы в редактировании файла-манифеста. В частности, например, если нашему приложению нужно более 180 Мб оперативной памяти, то есть, фактически, мы ориентируем его на устройства с не менее чем 1 Гб ОЗУ, в манифест стоит включить аппаратное требование ID_REQ_MEMORY_300. Подобного пункта в редакторе манифеста нет, для того, чтобы внести это требование в манифест, нужно вызвать контекстное меню файла WMAppManifest.xml, выбрать в нём команду Перейти к коду, после чего самостоятельно отредактировать файл манифеста. В данном случае, внести соответствующее требование в раздел файла Requirements, рис. 5.

    (рис 7.5) Редактирование файла WMAppManifest.xml в редакторе кода

    Обратите внимание на то, что приложение с включением подобного требования, при отладке его в эмуляторе, не запустится в эмуляторе, имитирующем устройство, имеющее 512 МБ ОЗУ

    Выводы

    В этой лекции вы ознакомились с основными особенностями шаблонов проектов приложений для Windows Phone 8 и изучили особенности устройства проекта приложения, созданного по шаблону Приложение Windows Phone, рассчитанного на платформу Windows Phone OS 8.0. Вы узнали о структуре и назначении основных файлов проекта, об использовании экранов-заставок, о роли и особенностях файла-манифеста приложения для Windows Phone.

    Задание

    Создайте проект приложения по шаблону Приложение Windows Phone 8, рассчитанный на платформу Windows Phone 8, добавьте в него новую страницу и настройте проект так, чтобы именно эта страница, а не MainPage.xaml, вызывалась при запуске приложения. Используя несколько графических файлов, подходящих для формирования экрана-заставки на экранах разрешений 480х800 (WVGA), 768х1280 (WXGA) и 720х1280 (720p), добейтесь того, чтобы приложение отображало различные экраны-заставки при запуске на эмуляторах с различным разрешением экрана. Изучите раздел Возможности файла-манифеста приложения для Windows Phone, выясните назначение различных возможностей, которые можно устанавливать для приложения, пользуясь пояснениями и ссылками на документацию, которые приводятся в редакторе манифеста. Выберите 5 любых возможностей и подготовьте развёрнутое сообщение с их описанием.

    Дополнительные материалы

    К данной лекции подготовлено видеоприложение и демонстрационный программный проект.

    Вернуться к учебному плану