Блог Сергея Байдачного

Мой блог о технологиях

Build 2013: Анонсы для разработчиков (часть 2)

7 комментариев

Кажется, мы дошли до самого интересного, а именно, до анонсов, относительно новых API для разработчиков Windows 8.1 Store приложений. Давайте бегло посмотрим, что тут есть, а уже потом я начну писать отдельные статьи.

Улучшение в развертывании приложений

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

Новые и улучшенные элементы управления

Вот уже полгода, как я ощущаю неудобство при вопросе о наличие в Windows 8 таких элементов, как DatePicker и TimePicker. Почему-то в Windows 8 эти элементы отсутствовали. Но в первом же обновлении ситуацию исправили и теперь разработчик может использовать как новые элементы по выбору даты и времени, так и многие другие:

· AppBarButton, AppBarSeparator, AppBarToggleButton – эти три элемента управления позволяют определить кнопки в панели приложения. Нетрудно догадаться, что первый класс определяет обычную кнопку, второй – разделитель групп кнопок, а третий – кнопку-переключатель. Все элементы имеют свойства Icon и Label, позволяющие задать надпись и изображение (будь то картинка или символ из шрифта), а также переключатель в компактный режим, при переходе в который надпись на кнопке скрывается. В целом ничего особенного, просто небольшое упрощение для разработчика, позволяющее не дублировать одинаковый код и не создавать собственные элементы;

· CommandBar – этот элемент является наследником от AppBar и позволяет избежать явной установки разметки внутри панели приложения. Вместо этого тут есть две коллекции, это PrimaryCommands и SecondaryCommands, которые содержат ссылки на кнопки, и автоматически их располагают в левой и правой частях панели соответственно;

· DatePicker, TimePicker – почему этих элементов не было раньше, остается загадкой, ведь выбор даты и времени, это одна из распространенных задач. Но теперь эти элементы есть и разработчики могут вздохнуть спокойно;

· Flyout – с помощью этого элемента можно отображать всплывающие окна, связанные с элементами управления. Формально, Flyout элемент можно вставить в дерево XAML, только привязав его к соответствующему свойству элемента, порожденного от FrameworkElement, но наиболее оптимально он работает для элемента Button. Именно Button обеспечивает автоматическое появление Flyout. Сам по себе элемент является контейнером и может содержать любой элемент компоновки, обеспечивающий разметку;

· Hub – еще один элемент управления для ленивых. Очень подходит для создания дизайна основной страницы приложения, так как позволяет разбивать контент внутри себя на секции, привязанные к одному источнику данных. Это позволяет задавать в каждой секции свой дизайн, в отличие от того же GridView. Раньше подобные интерфейсы создавались за счет размещения нескольких GridView внутри контейнера типа StackPanel, но там возникало много нюансов с динамическим изменением ширины интерфейса и прокруткой;

· Hyperlink – я много раз хотел поймать и убить разработчиков RichTextBlock, которые не сообразили добавить элемент, позволяющий отображать гиперссылки. Чего только не выдумывали разработчики в связи с этим. Но теперь проблема решена;

· MenuFlyout – аналог элемента Flyout, но больше адаптированного для создания контекстных меню;

· SettingsFlyout – и еще один элемент для ленивых, это окно настроек приложения, которое имело рекомендуемый дизайн. Если раньше разработчики просто копировали код элемента, то теперь достаточно просто создать окно настроек по шаблону Visual Studio, не вдаваясь в детали того, как создавать пользовательские элементы управления.

В Windows 8.1 также произошли обновления нескольких элементов управления. Например, в FlipView появилось свойство UseTouchAnimationsForAllNavigation, позволяющее включать красивую анимацию FlipView при работе с ним мышкой или с помощью клавиатуры.

Internet Explorer 11 и WebView

Элемент управления WebView имел одну из самых идиотских реализаций среди всех элементов Windows 8. Именно он вызывал у меня всплеск расизма и расширение запаса слов русского языка. Я даже сейчас спокойно не могу писать.

Во-первых WebView не терпел пересечение с любым другим элементом XAML, даже если это был выпадающий список или окно Settings в Вашем интерфейсе. Во-вторых, он позволял работать только с данными из Web. Если у Вас были локальные данные, то это мог быть только HTML в виде единого файла, так как WebView не работал с локальными каталогами. Иными словами, если Вы хотели выполнить кэширование контента, разбитого на несколько файлов или содержащего бинарные файлы (картинки, видео), то WebView помочь не мог.

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

А, еще WebView базируется на двигателе Internet Explorer 11, то есть поддерживает все последние стандарты HTML 5 (хотя есть отдельные моменты, например WebGL).

Преобразование дерева XAML элементов в изображение

Еще одна странность Windows 8, это отсутствие всякого API по снятию скриншота с интерфейса приложения. Хотя такая возможность была даже в Silverlight и успешно перешла в Windows Phone. Поэтому, после жалоб многих разработчиков, в Windows 8.1 появился класс RenderTargetBitmap, позволяющие преобразовать в изображение любую часть дерева XAML.

Работа с устройствами

В Windows 8.1 разработчик получил большой набор классов, позволяющих взаимодействовать с устройствами по различным протоколам:

· Human Interface Device (HID) – взаимодействие с устройствами, поддерживающими HID и включающими драйвера в состав Windows 8.1, например, какой-нибудь джойстик;

· Point Of Service (POS) – специальный набор классов для взаимодействия со сканнерами штрих кодов и магнитных лент;

· USB – поддержка USB устройств сделана на достаточно высоком уровне. Тут могут быть и какие-то устройства, разработанные Вами, следовательно не имеющие стандартных драйверов в инсталляции Windows;

· Bluetooth – всестороння поддержка передачи данных через соединение по Bluetooth.

Улучшенная поддержка DirectX

В DirectX произошло несколько небольших изменений, которые блекнут на фоне динамической компиляции шейдеров. Ведь именно отсутствие последней в Windows 8 остановило выход множества платформ для создания игр, а выход некоторых существенно отодвинуло. Теперь это все позади, хотя осадок остался, как и непонимание того, «почему это не было раньше?» Разработчики игр и графических приложений меня поймут.

Улучшенная работа с файлами

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

· Новый класс StorageLibrary позволяет управлять папками в библиотеках пользователя. Это возможно с помощью специального элемента управления, который способен инициировать вызов методов StorageLibrary;

· Новые два типа стандартных каталогов, таких как CameraRoll и Playlists добавлены в перечислимый тип KnownFolders и могут быть использованы в Ваших приложениях;

· Стандартный диалог, позволяющий работать с файлами, теперь способен связываться со SkyDrive и делать это по умолчанию. Это избавляет разработчика от использования сложных API в своем приложении для загрузки файлов в сеть;

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

Улучшенная работа с медиа

Наконец-то в Windows 8.1 появился класс MediaStreamSource, который был еще в Silverlight, но почему-то не перекочевал в Windows 8. Именно с помощью этой штуки, Вы можете реализовать приложение, которое будет читать из потока свой собственный формат, преобразовывать его и отправлять для отображения. Подобные задачи возникают очень часто, особенно у компаний, который транслируют защищенный контент по своему собственному протоколу.

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

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

Новые режимы отображения

Если раньше приложение должно было поддерживать минимальный размер 1024 на 768 и специальный snapped режим, устанавливающий ширину в 320 пикселей, то сегодня от последнего отказались. Вместо этого установили минимальную ширину для приложения в 500 пикселей, предполагая, что разработчик будет масштабировать экран приложения всякий раз, когда пользователь меняет его ширину. Это связано с тем, что в Windows 8.1 на экране может находиться несколько приложений, а ширину каждого из них пользователь может выбирать сам. При этом, приложение может установить и минимальную ширину 320 пикселей, если это имеет смысл.

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

Новые типы тайлов

В Windows 8.1 появилось два новых размера тайлов, это 70 на 70 и 310 на 310 пикселей. Иными словами, маленький и просто огромный тайлыJ Для меня это означает необходимость рисовать больше иконокJ

Улучшения при поиске

Был улучшен стандартный элемент управления, реализующий поиск. Теперь он поддерживает стилизацию. Для этого данных элемент можно разместить в разметки приложения и настроить его по своему усмотрению. Интеграция, как и раньше, происходит со стандартной панелью Windows.

Интеграция с календарем и контактами

Новые API позволяют разработчикам выполнить запрос на поиск контакта и получить информацию о нем в случае успешного нахождения. Кроме того, разработчик может получить доступ к активному календарю пользователя, выбрав информацию о планируемых встречах, а, при необходимости, назначить новую встречу или отменить существующую.

Не уверен, что функциональность найдет широкое применение, так как в Windows 8 я могу использовать любые приложения для хранения контактов, отличные от стандартных. А поскольку речь не идет о телефонах, а о планшетах и десктопах, то мне нет никакого интереса использовать возможности интеграции и импортировать список контактов из одного приложения в другое.

Синтез голоса

Windows 8.1 все еще догоняет некоторую функциональность, которая давно есть в телефоне. Вот так и произошло с синтезом голоса. Теперь и в Windows 8.1 разработчики могут использовать этот функционал.

Реклама

Written by Sergiy Baydachnyy

15.07.2013 в 10:58

Опубликовано в Microsoft, Windows 8

Tagged with

комментариев 7

Subscribe to comments with RSS.

  1. Это все хорошо, но будет ли возможность разрабатывать приложения под w8 на w8.1?
    И еще напишите ли вы еще книгу про разработку ПО под w8.1?

    Taras

    15.07.2013 at 14:47

    • А смысл?
      Пишу:)

      Sergiy Baydachnyy

      15.07.2013 at 21:27

      • Быстро они как-то, еще нормально не успел освоить w8 а тут уже нужно переходить на новое 🙂
        А книжечку с нетерпением буду ждать 🙂

        Taras

        15.07.2013 at 22:00

      • Да ладно. Это же только апдейт.

        Sergiy Baydachnyy

        16.07.2013 at 11:58

  2. 1. не хватает центра нотификаций
    2. «Новые режимы отображения» вводит в ступор. Нужно теперь многое переделать
    3. думаю с введением новых тайлов можно завязывать

    • По центру нотификаций вопрос остается еще открытым. Ждем релиза.
      По новым режимам отображения также ждем релиза. Не исключено, что для старых приложений какие-то возможности будут блокироваться. Хотя в бета версии интерфейс конечно же плывет.

      Sergiy Baydachnyy

      16.07.2013 at 11:59

  3. Приветствую
    Проблема, замок не могу открыть Что делать? Заранее спасибо за ответ! #s#

    Alexeydut

    25.09.2017 at 20:37


Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: