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