Статьи

Работа с живыми плитками локально


Если вы разрабатываете приложение или игру для Windows 8, вам обязательно нужно иметь интересную, информативную или информативную живую плитку.
Я всегда удивляюсь, когда вижу, сколько усилий прикладывает разработчик к своему приложению, но потом не тратит время на свою живую плитку. Живая плитка — это уникальный способ привлечь потребителей, пока они не используют ваше приложение. Это не только способ развлечься, но и сделать правильно, он снова и снова загонит их в ваше приложение или игру. В этой серии мы обсудим многие аспекты живых плиток, от того, что нужно поместить на вашу живую плитку, до использования Azure и Push-уведомлений для отправки данных в ваше приложение.

  1. Создание живой плитки, которая привлекает и приглашает
  2. Работа с Live Tiles локально (эта запись)
  3. Вращающиеся живые плитки, чтобы сохранить интерес
  4. Изменение живых плиток в фоновом процессе
  5. Использование Azure и Push-уведомлений с живыми плитками

Работа с TileUpdateManager

Чтобы показать вам принципы работы с плиткой локально, мы будем использовать очень простое приложение, которое состоит из простой формы и двух кнопок.

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

var templateType = TileTemplateType.TileWideSmallImageAndText04;
var xml = TileUpdateManager.GetTemplateContent(templateType);

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

using Windows.UI.Notifications;

Так какой контент мы берем с TileUpdateManager ? Это документ XML. Чтобы увидеть, как выглядит плитка, с которой мы работаем, поместите курсор под TileTemplateType и нажмите клавишу F1 на клавиатуре. Это приведет вас к документации по перечислению TileTemplateTypehttp://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.notifications.tiletemplatetype(v=win.10).aspx

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

Это полезно, но поскольку для визуализации плитки используется XML, нам необходимо знать XML-представление этой плитки. Если вы прокрутите вверх до верхней части страницы перечисления TileTemlplateType, на которую мы ссылались выше, вы увидите ссылку на каталог шаблонов плиток, который приведет вас сюда http://msdn.microsoft.com/en-us/library/windows/apps/ hh761491.aspx . Если мы ищем наш TileWideSmallImageAndText04, вы увидите изображение вместе с XML-представлением этого изображения.

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

var textNodes = xml.GetElementsByTagName("text");textNodes[0].AppendChild(xml.CreateTextNode("A message"));textNodes[1].AppendChild(xml.CreateTextNode("This text should wrap on max 3 lines, see if this fits on the tile!"));

Следующий код ищет все узлы xml в нашем шаблоне с именем «текст». Поскольку из шаблона мы знаем, что их два, мы просто добавляем текст, который мы хотим показать, к каждому из этих узлов, как показано выше.


Нам также нужно найти и изменить узел Image в XML.
var imageNodes = xml.GetElementsByTagName("image");var elt = (XmlElement)imageNodes[0];elt.SetAttribute("src", "ms-appx:///Assets/SmallLogo.png");


И так как мы используем XmlElement, нам нужно добавить следующее выражение using
using Windows.Data.Xml.Dom;

Как и текстовые элементы, мы знаем, что существует только один узел изображения, поэтому мы устанавливаем его «src» для изображения, которое мы имеем в нашем проекте.
ВАЖНОЕ ПРИМЕЧАНИЕ:   Если он не найдет изображение, ВСЕ произойдет сбой бесшумно. Я повторяю, он будет
молча терпеть неудачу , поэтому вы не получите ошибку, она просто не появится.

Теперь мы используем
TileUpdateManager, чтобы обновить плитку до только что указанного XML.
var tileUpdater = TileUpdateManager.CreateTileUpdaterForApplication();var tile = new TileNotification(xml);tileUpdater.Update(tile);
Before this will work, since we are using a Wide layout, we need a Wide Logo.  Right click on the Logo.png found in your Assets folder and select OpenWith.  From the list select Paint (or another graphics program of you choice) When paint opens, click on the resize button and set the size to 310 X150 (in pixels) while unchecking the “Maintain aspect ratio” checkbox.  Save the image back into the Assets folder and call it WideLogo.png.  Make sure you include it in your project (Click show all files, right click on WideLogo.png and select include in project)

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

Счастливого программирования