Марат Бакиров Виталий Дильмухаметов

advertisement
Windows Mobile 6.5 - мощная
платформа для создания
привлекательного и
функционального интерфейса
в ваших мобильных
приложениях
2
Марат Бакиров
Виталий Дильмухаметов
Microsoft RUS
Marano Software
Microsoft Платформа 2010
http://msplatforma.ru
Вопросы
Может ли Windows Mobile приложение
выглядеть красиво?
Кто из Вас имеет опыт native (C++)
разработки для Windows Mobile?
Кто из Вас имеет опыт разработки на
.NET CF?
Кто из Вас знает что такое pinvoke?.
3
Microsoft Платформа 2010
http://msplatforma.ru
Содержание
Тенденции мобильных интерфейсов
Полупрозрачность и градиент
UI Framework
Поддержка жестов в WM 6.5
Управляемая обертка для жестов
Создание Widgets
4
Microsoft Платформа 2010
http://msplatforma.ru
Вопрос
Что такое красивое приложение?
6
Microsoft Платформа 2010
http://msplatforma.ru
Тенденции интерфейсов
7
Microsoft Платформа 2010
http://msplatforma.ru
Тенденции интерфейсов
8
Microsoft Платформа 2010
http://msplatforma.ru
Тенденции интерфейсов
9
Microsoft Платформа 2010
http://msplatforma.ru
Тенденции интерфейсов
10
Microsoft Платформа 2010
http://msplatforma.ru
Тенденции интерфейсов выводы
Прозрачные изображения
Прямоугольные элементы с
закругленными углами
Элементы с градиентной заливкой
Фоновые изображения
11
Microsoft Платформа 2010
http://msplatforma.ru
Прозрачность бывает разная
Прозрачный цвет
Прозрачный рендеринг изображения
12
Microsoft Платформа 2010
http://msplatforma.ru
Осуществление прозрачности
Фон изображения закрашивается какимлибо цветом и обьявляется прозрачным
Поддерживается в .NET CF:
ImageAttributes attr = new ImageAttributes();
attr.SetColorKey(Color.Red, Color.Red);
e.Graphics.DrawImage(bmp, destRect, 0, 0, bmp.Width,
bmp.Height, GrahicsUnit.Pixel, attr)
13
Microsoft Платформа 2010
http://msplatforma.ru
Осуществление прозрачности
Все изображение прозрачное
Смешивание по альфа-каналу
Поддерживаеться Windows Mobile
платформой:
[DllImport("coredll.dll")
extern public static Int32 AlphaBlend(IntPtr hdcDest,
Int32 xDest, Int32 yDest, Int32 cxDest,
Int32 cyDest, IntPtr hdcSrc, Int32 xSrc,
Int32 ySrc, Int32 cxSrc, Int32 cySrc,
BlendFunction blendFunction);
14
Microsoft Платформа 2010
http://msplatforma.ru
Осуществление прозрачности
Изображение содержит альфа-канал
Поддерживаеться Windows Mobile
платформой через Imaging API’s COM
интерфейсы:
IImagingFactory
IImage
15
Microsoft Платформа 2010
http://msplatforma.ru
Градиентная заливка
Создается смешиванием двух или
нескольких цветов, причем один цвет
плавно переходит в другой.
Поддерживаеться Windows Mobile
платформой:
[DllImport("coredll.dll")]
public extern static bool GradientFill( IntPtr hdc, TRIVERTEX[]
pVertex, uint dwNumVertex, GRADIENT_RECT[] pMesh, uint
dwNumMesh, uint dwMode);
16
Microsoft Платформа 2010
http://msplatforma.ru
Как?
http://code.msdn.microsoft.com/uiframework
Msdn.UI
Прозрачность, градиенты, title bar
Подстройка существующего UI.
DataGrid, ListView, CustomBorder.
17
Microsoft Платформа 2010
http://msplatforma.ru
UI Framework
Демонстрация
Виталий Дильмухаметов
Marano Software
18
Microsoft Платформа 2010
http://msplatforma.ru
Поговорим о жестах
Жесты это не только касание, но и
взаимодействие.
Касание пальцем не является точным:
Форма и размер
Разная скорость и угол движения
Менее точное чем пером (stylus)
19
Microsoft Платформа 2010
http://msplatforma.ru
WM 6.5 элементы управления и
жесты
Listview
Listbox (включая combo)
Webview
Treeview
Tab (прокрутки налево/направо чтобы
поменять страницу)
20
Microsoft Платформа 2010
http://msplatforma.ru
Как жесты работают в WM 6.5
Жесты!= Mouse Messages
Жесты, доставляются к окну первого
касания
сообщение WM_GESTURE
wParam Содержит код типа жеста
lParam Содержит GESTUREINFO структуру
21
Microsoft Платформа 2010
http://msplatforma.ru
Поддерживаемые типы жестов
Панорамирование (Pan)
Прокрутка (Scroll) – Инерция после
панорамирования
Выбор (tap)
Двойной выбор (Double-tap)
Задержка (Hold)
22
Microsoft Платформа 2010
http://msplatforma.ru
Managed Wrapper
GestureRecognizer
Добавляется к System.Windows.Forms.Control
Работает чере P/Invoke
Использует сообщения WM_GESTURE
Предоставляет управляемые (.NET) события
var g = new GestureRecognizer();
g.TargetControl = panel1;
g.Select += (sender, GestureEventArgs e) => …
g.DoubleSelect += (sender, GestureEventArgs e) => …
g.Hold += (sender, GestureEventArgs e) => …
g.Pan += (sender, GestureEventArgs e) => …
g.Scroll += (sender, GestureScrollEventArgs e) => …
23
Microsoft Платформа 2010
http://msplatforma.ru
Physics Engine
Обеспечивает “естественное” ощущение во
время прокрутки.
Продолжает прокрутку и уменьшает
скорость в зависимости от начального
ускорения.
Обеспечивает эффект растянутой резины.
Также обеспечивает допустимую остановку
основаную на размере елемента.
24
Microsoft Платформа 2010
http://msplatforma.ru
Managed Wrapper
PhysicsEngine
Использует PhsyicsEngine API через P/Invoke
Предоставляет управляемое событие
AnimateFrame
var p = new PhysicsEngine();
p.ExtentControl = pictureBox1;
p.ViewportControl = panel1;
…
g.Scroll += (sender, GestureScrollEventArgs e)
{
p.Stop();
p.Angle = e.Angle;
p.Velocity = e.Velocity;
p.Start(); // or p.Start(e.Angle, e.Velocity);
};
Microsoft Платформа 2010
http://msplatforma.ru
26
Автоматические жесты (WAG)
Автоматизирует сценарии использования
жестов.
Поддерживается любым окном со
стилем WS_VSCROLL или
WS_HSCROLL
Поддерживает отправку
WM_VSCROLL/WM_HSCROLL
сообщений или анимации
27
Microsoft Платформа 2010
http://msplatforma.ru
Managed Wrapper
AutoGestureContext
Работает через WAGI API и P/Invoke
Управляемое событие Status и
OwnerAnimate
var wag = AutoGestureContext.GetContext(panel1);
wag.IsOwnerAnimated = true;
wag.HorizontalExtent = 10; // percent
wag.OwnerAnimate += (sender, AutoGestureAnimateEventArgs e)
{
pictureBox1.Location = e.Location;
};
wag.Status += (sender, AutoGestureStatusEventArgs e)
{
label1.Text = e.Status.ToString() + “ “ +
e.ExtraStatus.ToString();
};
28
Microsoft Платформа 2010
http://msplatforma.ru
Gesture Framework
Демонстрация
Марат Бакиров
Microsoft Rus.
29
Microsoft Платформа 2010
http://msplatforma.ru
Что такое Widget?
Небольшoe одноцельное миниприложениe
30
Microsoft Платформа 2010
http://msplatforma.ru
Widgets на мобильных
устройствах
31
Microsoft Платформа 2010
http://msplatforma.ru
Что они могут делать?
Выглядят также как и родные приложения
Доступ к ограниченым данным устройства
за пределами изолированной программной
среды
Полная поддержка AJAX, родной JSON
парсер, можно использовать элементы
управления ActiveX (как Flash)
32
Microsoft Платформа 2010
http://msplatforma.ru
Что там под капотом?
HTML
Widgets Runtime
Powered by
Internet Explorer Mobile
JavaScript
CSS
Images
Web
Rendering
Engine
Script
Engine
XML Manifest
33
Microsoft Платформа 2010
Flash
Security Broker
Widget
Package
Plugins
MSXML
Windows
Media
…
JavaScript
Device
Extensions
Menu
Settings
Storage
…
http://msplatforma.ru
За пределами изолированной
программной среды
Доступ к информации о текущем состоянии
устройства
CradlePresent
PhoneHomeService
PhoneRoaming
PhoneSignalStrength
PhoneOperatorName
DisplayRotation
PowerBatteryStrength
PowerBatteryState
34
Microsoft Платформа 2010
http://msplatforma.ru
Создание Widgetов
1
2
3
Create
Package
Deploy
Design and
develop
the user
experience
35
Create the
XML Manifest
Package as
Zip, renamed
to .widget
Transfer to
device and
install
Microsoft Платформа 2010
Distribute it
on the
Windows
Marketplace
http://msplatforma.ru
Создание простого Widget(a)
Демонстрация
Виталий Дильмухаметов
Marano Software
36
Microsoft Платформа 2010
http://msplatforma.ru
Итоги
Тенденции мобильных интерфейсов
Полупрозрачность и градиент
UI Framework
Поддержка жестов в WM 6.5
Управляемая обертка для жестов
Создание Widgets
37
Microsoft Платформа 2010
http://msplatforma.ru
Ресурсы ENG
UI Framework:
http://code.msdn.microsoft.com/uiframework
Gesture Framework:
http://code.msdn.microsoft.com/gestureswm
Разработка Widgets:
http://msdn.microsoft.com/enus/library/dd721906.aspx
38
Microsoft Платформа 2010
http://msplatforma.ru
Ресурсы RUS
Руссский блог Windows Mobile
http://blogs.msdn.com/windowsmobile_ru/
Конкурс приложений для Windows Mobile
www.wmdev.ru
39
Microsoft Платформа 2010
http://msplatforma.ru
Вопросы
Марат Бакиров
http://blogs.msdn.com/mbakirov
Виталий Дильмухаметов
http://blogs.gotdnotnet.ru/personal/grp
{Александр Яхнин}
http://blogs.msdn.com/priozersk/
Вы сможете задать вопросы докладчику в
зоне «Спроси эксперта» в течение часа
после завершения этого доклада
40
Microsoft Платформа 2010
http://msplatforma.ru
Download