Upload
uneta
View
52
Download
1
Embed Size (px)
Citation preview
Windows Phone 8Windows Phone 8.1
Windows 8
Xbox One
Windows 8.1
Windows 10
Windows on Devices
2
UAP = Universal App Platform
3
UAP
Windows Core
Windows Core
Windows Core
Windows Core
UAP UAP UAP
Desktop Mobile Xbox More…
UAP = Universal App Platform
4
Windows Phone 7.5/7.8
Windows Phone 8.0
Windows Phone 8.1*
Портировать UI Silverlight на Windows XAML
Переписать код под UAP APIs*
Адаптировать UX под разрешения
Windows 10
Windows Phone Silverlight Apps
5
Немного изменить код под UAP
Минимально адаптировать UX
Windows 10
Universal app
6
Необходимо поменять файл проекта и манифест package.appxmanifestНо средств в Visual Studio пока еще нет
…но уже есть написанный Powershell скрипт, который может это сделатьВот он - http://aka.ms/W10P-ProjectUpgradeUtility
Миграция проекта
7
Поддерживаемые директивы:1. WINDOWS_APP2. WINDOWS_PHONE_APP3. WINDOWS_UAP (new)
Shared project
8
Новые SDK
9
IsApiContractPresentIsEnumNamedValuePresentIsEventPresentIsMethodPresentIsPropertyPresentIsReadOnlyPropertyPresentIsTypePresentIsWriteablePropertyPresent
Windows.Foundation.Metadata.ApiInformation
Как определить с чем работаем?
10
var ns = "Windows.Phone.UI.Input.HardwareButtons";if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent(ns)){
Windows.Phone.UI.Input.HardwareButtons.BackPressed += Back_BackPressed;
}
Что получается в итоге?
11
SplitView
Your Windows App
SplitView
13
<SplitView>
<SplitView.Pane>
<StackPanel>
<RadioButton />
<RadioButton />
</StackPanel>
</SplitView.Pane>
</SplitView>
SplitView.Pane
14
<SplitView>
<SplitView.Pane />
<SplitView.Content>
<Frame/>
</SplitView.Content>
</SplitView>
SplitView.Content
15
SplitView.PaneDisplayMode
16
Windows XAML layout controls
Grid Stack Panel Canvas Scroll
Viewer Border View Box Wrap Grid Relative Panel
Relative Panel это XAML контрол. Контент располагается на основе отношения между
детьми.
RelativePanel
17
<RelativePanel>
<Rectangle x:Name="BlueRect" Height="100" Width=“200" Fill="Blue" />
<Rectangle x:Name="RedRect" Height="100" Width="100" Fill="Red"
RelativePanel.RightOf="BlueRect"RelativePanel.AlignVerticalCenterWith="BlueRect" />
</RelativePanel>
RelativePanel
18
<RelativePanel>
<Rectangle x:Name="BlueRect" Height="100" Width=“200" Fill="Blue" />
<Rectangle x:Name="RedRect" Height="100" Width="100" Fill="Red"
RelativePanel.Below="BlueRect"RelativePanel.AlignRightWith="BlueRect" />
</RelativePanel>
RelativePanel
19
<VisualState x:Name="LandscapeState"><VisualState.Setters>
<Setter Target="RedRectangle.(RelativePanel.AlignHorizontalCenterWith)"
Value="BlueRect" /><Setter Target="RedRectangle.(RelativePanel.Right)"
Value="BlueRectangle" /></VisualState.Setters>
</VisualState><VisualState x:Name="PortraitState">
<VisualState.Setters><Setter Target="RedRectangle.
(RelativePanel.AlignVerticalCenterWith)"Value="BlueRect" />
<Setter Target="RedRectangle.(RelativePanel.Below)" Value="BlueRectangle" />
</VisualState.Setters></VisualState>
Visual State Manager
20
<VisualState x:Name="wideState"> <VisualState.Setters> <Setter Target="myPanel.Orientation" Value="Horizontal" /> </VisualState.Setters> <VisualState.StateTriggers> <AdaptiveTrigger MinWindowWidth="600"/> </VisualState.StateTriggers></VisualState>
Adaptive trigger
21
Depth
OffsetYOffsetX
TranslateZ+
TranslateZ-
Transform3d
22
<Grid Width="300" Height="200">
<Grid.Transform3D> <PerspectiveTransform3D OffsetX="-150" OffsetY="-100" Depth="1000" /> </Grid.Transform3D>
<Grid Background="Red"> <Grid.Transform3D> <CompositeTransform3D RotationY="30" TranslateZ="1"/> </Grid.Transform3D> </Grid>
<Grid Background="Blue"> <Grid.Transform3D> <CompositeTransform3D RotationX="-30" TranslateZ="-1"/> </Grid.Transform3D> </Grid>
</Grid>
Transform3d
23
Проекция на плоскости
24
Перспектива и параллакс
25
Отправить токен файла
Запустить *определенное* прил.
App Services
Дождаться результатов запуска
Взаимодействие между приложениями
26
Запуск определенного приложения
var options = new LauncherOptions();options.TargetApplicationPackageFamilyName = "24919.InstapaperIt";
var launchUri = new Uri("instapaper:?AddUrl=http%3A%2F%2Fbing.com");await Launcher.LaunchUriAsync(launchUri, options);
var queryUri = new Uri("instapaper:");await Launcher.QueryUriSupportAsync(queryUri, LaunchUriType.LaunchUri);
27
Хранилище для «шаринга»
var options = new LauncherOptions();options.TargetApplicationPackageFamilyName = "24919.InstapaperIt";
var token = SharedStorageAccessManager.AddFile (gpxFile);
ValueSet inputData = new ValueSet();inputData.Add("Token", token);
var launchUri = new Uri("instapaper:?AddUrl=http%3A%2F%2Fbing.com");await Launcher.LaunchUriAsync(launchUri, options, inputData);
28
// первое приложениеvar options = new LauncherOptions();options.TargetApplicationPackageFamilyName = "24919.Instap";var launchUri = new Uri("instapaper:?AddUrl=http%3A%2F%2Fbing.com");await Launcher.LaunchUriForResultsAsync(launchUri, options, data);
// второе приложениеvar resultData = new ValueSet();resultData.Add("Result", value);operation.ProtocolForResultsOperation.ReportCompleted(resultData);
Получение ответа
29
<Package> <Extensions>
<Extension Category="windows.publisherCacheFolder"> <PublisherCacheFolder> <Folder Name="Folder1"> </PublisherCacheFolder> </Extension>
</Extensions></Package>
Общая папка для одного автора
30
Доступ к папке “fonts”
Windows.Storage.ApplicationData.Current .GetPublisherCacheFolder("fonts");
Очистить общую папку
Windows.Storage.ApplicationData.Current .ClearPublisherCacheFolderAsync();
Общая папка для одного автора
31
Action center
32
Action center
- Максимум 20 уведомлений на приложение;
- Можно удалять одно или несколько уведомлений;
- Ставить «срок годности» уведомлениям;- Заменять уведомления другими;- Задавать уведомления св-ва Group или
Tag;- Отлавливать изменения в action center
при помощи специально триггера. Реализуется через BackgroundTask.
….. 33
• Карты (новый общий контрол)• АПИ батареи• CalendarPicker• LaunchFolder• InkCanvas• App Services• Распознавание речи
Еще новенького
34
Выводы