Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Windows
Code

Ствараем наша першы ўніверсальны дадатак для Windows

by
Difficulty:BeginnerLength:LongLanguages:

Belarusian (беларуская мова) translation by Alex Grigorovich (you can also view the original English article)

Універсальныя дадатки Windows дазваляюць задзейнічаць розныя прылады Windows з дапамогай адзінага рашэння. Вы пішаце код, размяркоўваеце яго большую частку і карыстаецеся для Windows, Windows Phone або Xbox.

Сутнасць складаецца ў тым, каб максымізаваць паўторнае выкарыстанне кода. Вы можаце паўсюдна выкарыстоўваць код, элементы кіравання, стылі, радкі і іншыя актывы паміж праектамі Windows Phone і Windows 8 з дапамогай Visual Studio. Гэта памяншае намаганні, неабходныя для стварэння і падтрымкі прыкладання для кожнага тыпу прылад.

Увядзенне

З пункту гледжання распрацоўніка ўніверсальны дадатак Windows - гэта не адзін бінарны файл, які працуе на некалькіх платформах. Хутчэй, яно прымае форму рашэння Visual Studio, якое змяшчае некалькі праектаў: адзін праект для кожнай платформы ў дадатак да сумеснага праекту, які змяшчае код і рэсурсы, размеркаваныя паміж платформамі. Большая частка кода можа быць размеркавана паміж праектамі, так як Windows Phone 8.1 выкарыстоўвае API-інтэрфейс WinRT, рэалізаваны ў Windows 8.1.

Вы можаце стварыць дадатак для Windows Phone з выкарыстаннем асяроддзя Silverlight (версія 8.0 або 8.1) або асяроддзя WinRT (адно з універсальных дадаткаў для Windows). Асяроддзе WinRT дазваляе стварыць адыны дадатак, яки будзе працаваць на Windows, Windows Phone і нават на Xbox One.

Мы будзем выкарыстоўваць фреймворк XAML каб распрацаваць прыкладанне для некалькіх платформаў. У бягучай версіі канвергенцыя API складае 90%, але ўсё яшчэ існуе невялікая колькасць несумяшчальнага кода. Функцыі Windows Phone, даступныя толькі ў асяроддзі Silverlight, наступныя:

  • Падтрымка аб'ектывауі
  • Падтрымка VoIP
  • Задача захопу камеры
  • API для буфера абмену
  • API для шпалер экрана застаўкі

У нашым ўроку я буду выкарыстоўваць універсальны шаблон дадатку Windows для таго, каб стварыць прыкладанне Hex Clock, дакладныя шаснаццаткавыя гадзіны. Яны пакажуць ўвесь дыяпазон коляроу у плыні 24 гадзін, ад #000000 да #235959. Пры кожным ціканне гадзін фон прыкладання будзе змяняцца на колер, які адпавядае бягучаму часу, ператвораныя ў шаснаццатковы фармат. Ён будзе выкарыстоўваць тую ж рэалізацыю, што і Hex Color JS Clock, для генерацыі шаснаццатковай кода бягучага часу.

Крыніцай натхнення з'яўляецца ўрок па стварэнні дадатка для Windows Phone 7 на Tuts+. Пакуль дадатак гадзін прызначан толькі для Windows Phone, мы выкарыстоўваем яго дызайн, каб стварыць аналагічнае прыкладанне для Windows Phone 8.1 і Windows 8.1. Наступны скрыншот паказвае тое, што мы збіраемся пабудаваць.

Final image of how hexadecimal clock will look

У гэтым уроку мы абмяркуем наступныя тэмы, якія маюць дачыненне да распрацоўкі універсальных дадаткау для Windows:

  • структура універсальных дадаткаў Windows
  • пераключэнне праектаў у Visual Studio
  • кантэкстны камутатар для універсальных дадаткаў Windows ў рэдактары Visual Studio
  • як стварыць кросплатформавы код у супольным праекце
  • як дадаць падтрымку Windows або Windows Phone да існуючага праекту
  • стварэнне універсальнага дадатка Windows з нуля

1. Структура універсальных дадаткау Windows

Ўніверсальны дадатак Windows ўяўляе сабой набор з трох праектаў, размешчаную ў дадатковую тэчку рашэнняў. Праекты Windows і Windows Phone платформенныя і адказваюць за стварэнне пакетаў дадаткау (.appx), прызначаных для адпаведных платформаў. Гэтыя праекты ўтрымліваюць дадзеныя, неабходныя для канкрэтнай платформы.

Агульны праект - гэта кантэйнер для кода, які працуе на абедзвюх платформах. У яго няма двайковага кода, а іх змесціва імпартуецца платформенныя праектамі як і выкарыстоўваюцца як частка працэсу зборкі для стварэння пакетаў дадаткау (.appx).

Скрыншот паказвае рашэнне, якое створыць Visual Studio, калі вы вылучыце шаблон Blank App (Universal Apps).

Universal app solution structure

Visual Studio 2013 Update 2 прадастаўляе новую функцыю - універсальны дадатак Windows. Загрузіце і ўсталюйце гэта абнаўленне перад пачаткам стварэння універсальных дадаткау Windows.

2. Пераключэнне праектаў

Калі вы ствараеце рашэнне, праект, які выконваецца, з'яўляецца стартавым. Каб усталяваць стартавы праект, пстрыкніце правай кнопкай мышы над праектам у аглядальніку рашэнняў і абярыце параметр «Устанавіць як стартавы праект». Вы можаце хутка пераключыць стартавы праект з выпадальнага меню «Адладка», які зараз змяшчае ўсе праекты рашэння.

Switching startup projects

Абраны праект выдзелены тлустым шрыфтам у аглядальніку рашэнняў. Даступныя параметры адладкі змяняюцца пры пераключэнні стартавых праектаў.

  • Калі праект Windows стартавы, у выпадальным меню «Адладка» адлюстроўваюцца параметры для сімулятара Windows або лакальнай машыны.
  • Калі праект Windows Phone з'яўляецца стартавым праектам, у выпадальным меню адлюстроўваюцца параметры для прылады, а таксама розныя эмулятары.

3. Кантэкстны перамыкач у рэдактары кода

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

Context switcher in the editor

Кали вы карыстаецеся API ў размеркаваныя кодзе, які не падтрымліваецца на абедзвюх платформах, паведамленне пра памылку вызначыць гэта API пры стварэнні праекта. Вам не трэба кампіляваць праект, пакуль вы не пераканайцеся, што выкарыстоўваеце кросплатформавыя API.

Наступны скрыншот паказвае прыклад апавяшчэнняў у IntelliSense для выпадку, апавяшчэнняў для дадаткау Windows Phone.

Example of warning icons and Intellisense

4. Кросплатформавы код у супольным праекце

У размеркаваныя праекце вы звычайна пішаце код для абедзвюх платформаў. Каб аддзяліць часткі кода, спецыфічныя для кожнай платформы, выкарыстоўвайце дырэктыву #ifdef. Канстанты WINDOWS_APP і WINDOWS_PHONE_APP определенны.

Ніжэй прыведзены канстанты ўмоўнай кампіляцыі, якія вы можаце выкарыстоўваць для напісання кода, спецыфічнага для платформы:

C# WINDOWS_APP
WINDOWS_PHONE_APP
C++
WINAPI_FAMILY_PC_APP
WINAPI_FAMILY_PHONE_APP

Кали вы пішаце код у супольным праекце, рэдактар кода Visual Studio выкарыстоўвае кантэкст, які накіраваны на тую ці іншую платформу. У C# IntelliSense, які вы бачыце пры напісанні кода, спецыфічны для кантэксту рэдактара кода, гэта значыць для Windows або Windows Phone.

5. Даданне падтрымкі для Windows / Windows Phone

Калі ў вас ужо ёсць дадатак Windows 8.1, вы можаце выкарыстоўваць каманду Add Windows Phone 8.1 каб дадаць новы праект Windows Phone 8.1 і размеркаваны праект у рашэнне. Аналагічны варыянт даступны, калі ў вас ёсць прыкладанне Windows Phone 8.1, і вы хочаце дадаць падтрымку для Windows 8.1.

Каб дадаць падтрымку тыпу прылады ў аглядальніка рашэнняў пстрыкніце правай кнопкай мышы праект і выберыце Дадаць Windows Phone 8.1 або Add Windows 8.1 для існуючага праекта Windows Phone 8.1.

Add Windows 81 app to existing Windows Phone 81 project

Visual Studio дадае ў рашэнне новы праект Windows Phone або Windows. Размеркаваны праект таксама будзе аўтаматычна створаны.

Наступны скрыншот паказвае рашэнне пасля дадання праекта Windows Phone ў існуючы праект. Размеркаваны праект, дададзены ў рашэнне, першапачаткова пусты.

Project structure after adding a Windows 81 project to an existing Windows Phone 81 app

Заметьте, што калі вы ствараеце прыкладанне з выкарыстаннем універсальнага шаблону дадатка Windows, размеркаваны праект ужо змяшчае файл App.xaml.

Шаг 1: Перанос файлаў у размеркаваны праект

Вы можаце перамяшчаць любы код, які вы хочаце размеркаваць паміж дадаткамі, у агульны праект. Напрыклад, вы можаце перамясціць папкі Common, DataModel і Strings ў агульны праект. Вы нават можаце перамясціць туды App.xaml.

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

Наступны скрыншот паказвае на спасылку, дабаўленую ў абодва праекты.

Adding same assembly reference to both projects

Даданне спасылкі ў абодва праекты. Калі ваш агульны код выкарыстоўвае API, спецыфічныя для Windows, выкарыстоўвайце дырэктыву #ifdef з канстантай WINDOWS_APP, каб аддзяліць гэтую частку кода. Выкарыстоўвайце канстанту WINDOWS_PHONE_APP, каб аддзяліць часткі кода, спецыфічныя для Windows Phone 8.1.

Крок 2: Размеркаванне App.xaml

Кали вы ствараеце новае рашэнне для універсальнага дадатка Windows, Visual Studio змяшчае App.xaml ў агульны праект. Калі вы конвертуеце існуючы праект у ўніверсальны дадатак Windows, вы можаце перамясціць App.xaml ў агульны праект ўручную. Пасля перамяшчэння файла вам трэба будзе змяніць ўласцівасць action для зборкі на ApplicationDefinition. Ніжэй прыведзены нашы крокі:

  • У аглядальніку рашэнняў у супольным праекце выберыце файл App.xaml.
  • Выберыце акно «Від» > «Уласцівасці».
  • У акне «Уласцівасці» у выпадальным спісе Action абярыце ApplicationDefinition.

Вы таксама можаце выбраць, як вы хочаце адкрыць першую старонку свайго дадатка. Калі вы размеркаваныя карыстаецеся файл App.xaml і хочаце выкарыстоўваць розную стартавую старонку для кожнага дадатка, вам трэба дадаць дырэктывы #ifdef, як паказана ниже.

6. Пачынаем напісанне універсальнага дадатка Windows App

Шаг 1: Налада проекта

Для пачатку, абярыце шаблон праекта для універсальнага дадатка Windows у дыялогавым акне «Новы праект». На наступным скрыншоце паказаны універсальныя шаблоны праектаў дадаткау Windows, якія ў цяперашні час даступныя для C#.

Universal Windows app templates

Напішыце назву праекта. Я напішу Hex Clock Pro для свайго праекту.

Крок 2: Стварэнне карыстацкага інтэрфейсу

Па большай частцы праца з карыстацкім інтэрфейсам выконваецца ў праектах, спецыфічных для платформы, і гэта дазваляе ствараць карыстацкі інтэрфейс, які выдатна глядзіцца на ПК, планшэтах і тэлефонах, але яны маюць агульныя дадзеныя, рэсурсы, кампаненты і нават мадэлі.

Замест стварэння асобных карыстацкіх интерфей сов для версій Windows Phone 8.1 і Windows 8.1 Hex Clock Pro я вызначаю агульны дызайн у размеркаваныя праекце. Мне проста трэба ўнесці некалькі змен у файл XAML дадатка гадзін на Tuts+, каб ён працаваў на абедзвюх платформах.

Крок 3: Сумеснае выкарыстанне кода

Как згадвалася раней, код, які з'яўляецца агульным для абодвух платформаў, можа быць змешчаны ў размеркаваны праект. Код, які выкарыстоўвае спецыфічныя для платформы API, павінен быць змешчаны ў адзін з праектаў, арыентаваных на пэўную платформу. Вы таксама можаце выкарыстоўваць дырэктывы #ifdef для ўключэння кода, спецыфічнага для кожнай платформы, у агульным файле.

Паколькі дадатак Hex Clock Pro не выкарыстоўвае API-інтэрфейсы, спецыфічныя для платформы, Я магу змясціць увесь код у агульны праект.

Хаваем Status Bar

У файле MainPage.xaml.cs у супольным праекце, мы выкарыстоўваем дырэктыву #ifdef для таго, каб вылучыць код, спецыфічны для Windows Phone. Код, зняволены ў #ifdef, хавае радок стану на Windows Phone.

Адлюстраванне бягучага часу

Я выкарыстаў клас DispatcherTimer для выкліку пачатковага ціканне пры загрузцы LayoutRoot. Аб'ект timer выклікае функцыю timer. Функцыя timer_Tick выконваецца пры кожным ціканне часов.

Функция timer_Tick абнаўляе адлюстроўваецца час у дадатку і ў той жа самы час абнаўляе колер фону.

Абнаўленне колеру фону

Колер фону усталёўваецца ў выглядзе шаснаццатковай колеру, які адпавядае бягучаму часу.

Аб'ект класа HexColour ініцыялізуецца бягучых часам, вяртаючы адпаведныя значэння RGB. Канструктар класа HexColour задае значэння A, R, G, B для названага колеру.

Даданне анімацый і эфектаў

Я паўтарыў пачатковую анімацыю, якую выкарыстоўвае ў папярэднім дадатку гадзін на Tuts+ і яна ініцыялізуецца пры загрузцы LayoutRoot.

Гэта ўсё, што нам трэба для стварэння дадатка Hex Clock Pro. Дадатак выкарыстоўвае 100% размеркаваны код. Вам проста трэба стварыць асобныя зборкі дадаткау для абедзвюх платформаў. Дадатак выглядае вельмі падобна на дадатак Windows Phone і выкарыстоўвае адзін і той жа код XAML для свайго карыстацкага інтэрфейсу.

Hex Clock Pro for Windows Phone 81

Заўважце, што я дадаў увесь код XAML і C # у агульны праект, але пры разгортванні дадатка Windows або Прыкладанні Windows Phone, код у супольным праекце аб'яднаны ўнутры з праектамі, спецыфічнымі для платформы.

Зняволенне

Большасць кода для дадатка Windows і прыкладанні Windows Phone з'яўляецца размеркаваным, і, хоць карыстацкія інтэрфейсы падзеленыя, яны досыць падобныя, каб стварыць абодва спатрэбіцца менш намаганняў, чым стварэнне двух карыстацкіх інтэрфейсаў з нуля.

Калі б я распрацаваў версію Windows Hex Clock Pro для Windows Phone 7 або 8, гэта было б нашмат даўжэй, паколькі Windows Phone 7 не ўтрымлівае WinRT API і Windows Phone 8 ўтрымлівае толькі невялікую частку API.

У Windows 10 мы ўбачым больш канвергенцыі, што азначае адзін API-інтэрфейс WinRT API для некалькіх платформаў і высокую ступень адпаведнасці паміж элементамі карыстацкага інтэрфейсу для кожнай платформы, якая не выключае прымяненне элементаў, спецыфічных для асобных платформаў, каб прадставіць самыя лепшыя магчымасці для кожнага прылады. Не саромейцеся і спампоўвайце зыходныя файлы падручніка для выкарыстання ў якасці прыкладу. Hex Clock Pro таксама даступны на marketplace для Windows Phone 8.1 і Windows 8.1.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.