SlideShare a Scribd company logo
오픈소스를 이용한 윈도우 폰 UX애플리케이션 개발서진호 차장 (Jinho.Seo@microsoft.com) 모바일/임베디드 디벨로퍼 에반젤리스트한국 마이크로소프트블로그: http://blogs.msdn.com/jinhoseo커뮤니티: http://www.winmodev.net트위터: @synabreu
Agenda윈도우 모바일 6.5 UX 아키텍처개발자들을 위한 요구 사항윈도우 모바일 6.5 DTK에 포함된 터치 및 제스처오픈 소스 프레임워크를 이용한 Apps 개발FruidTouch ControlSilvermoon for OPEG GL ES 윈도우 모바일 UX 애플리케이션 개발 최적화
세계는 지금 모바일 UX 전쟁?모바일 UX의 스마트폰 얼굴이기 때문에!하드웨어보다는 소프트웨어 차별화 시대로!
CES’2010 에서 본 윈도우 모바일 UX출처: WMPowerUser
왜 폰에서 사용자 경험이 중요한가?더 뛰어난 그래픽 사용자 경험직관적인/생산적인 Phone UI더 나은 인터넷 브라우징 (모바일/데스크톱)끊김없는 연결성더 나은 멀티미디어 경험오피스 도구와의 통합
Design Concept - InteractionHomeStartInternet ExplorerMobile 66
DemoWindows Mobile 6.5
윈도우폰 애플리케이션 개발 방법Smart Device projectPlatform BuilderC#, VB.NETC/C++HardwareSoftwareApplicationWin32, MFC, ATLOS
윈도우 모바일 6.5 DTK에뮬레이터 이미지, 터치 제스처 및 위젯 API반드시 Windows Mobile 6 SDK 필요
터치 제스처 DTK 에서는 C/C++만, 코드 갤러리에 C#용http://code.msdn.microsoft.com/gestureswm동작원리제스처는 마우스 메시지가 아니다.WM_GESTURE 메시지 (GESTUREINFO 구조체 포함)기본 제스처Pan, Scroll (Inertia), Select (Tap), Double-select, Hold컨트롤에서의 터치 제스처 지원ListView및 ListBox (콤보 박스 포함)WebView및 TreeView, Tab (왼쪽에서 오른쪽으로 스크롤링)Managed WrapperGestureRecognizerPhysicsEngineAutoGestureContext
터치 제스처 동작원리 GESTUREINFOGF_INERTIAGF_BEGIN종류에 따라(Gesture IDs)GF_ENDGID_BEGIN  = 1GID_END = 2GID_PAN = 4GID_SCROLL = 8GID_HOLD = 9GID_SELECT = 10GID_DOUBLESELECT = 11GID_LAST = 11
Managed WrapperGestureRecognizerhttp://code.msdn.microsoft.com/gestureswmPhysicsEngine자연스러운 스크롤링을 할 수 있음스크롤링시 rubber-band 효과 제공Animation point 의 스트림 생성AutoGestureContext 자동적인 제스처 핸들링 및OwnerAnimate이벤트 핸들러 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) => …
Demo관리형 제스처 샘플
왜 오픈 소스 프레임워크인가?창조적인 아이디어를 빠르게 구현하기 위해!!개발한 소스를 재활용 하기 위해!!멀티 장치 디스플레이에도 동일하게 동작하기 위해글로벌 언어 및 리소스를 편리하게 관리
Touch UI Chris 가 개발한 Touch UI  for Windows Mobile 6.1/6.5http://touchui.codeplex.com/http://blog.wmdev.net/
Touch UI(1)private void MainForm_Load(object sender, EventArgs e){dialogStack = new List<Dialog>();MainDialogmainDialog = new MainDialog(Common.Instance.ScreenFactor, Common.Instance.ClientRectangle);mainDialog.Selected += new EventHandler(dialogSelected);dialogStack.Add(mainDialog);            navigate();            timer = new Timer();timer.Interval = 80; // 12.5 fpstimer.Tick += new EventHandler(timer_Tick);timer.Enabled = true;            loaded = true;}private void MainForm_Activated(object sender, EventArgs e){            if(loaded) timer.Enabled= true;}private void MainForm_Deactivate(object sender, EventArgs e){            if(loaded)  timer.Enabled = false;}
Touch UI(2) – Scroll Up/Downprivate void MainForm_MouseUp(object sender, MouseEventArgs e)        {dialogStack.Last().MouseUp(new Point(e.X, e.Y));        }…..private void MainForm_KeyDown(object sender, KeyEventArgs e)        {dialogStack.Last().KeyDown(e);}….private void navigateForward()        {            if(dialogStack.Last() is MainDialog)            {MainDialogmainDialog = (MainDialog)dialogStack.Last();DetailDialogdetailDialog = new DetailDialog(Common.Instance.ScreenFactor, Common.Instance.ClientRectangle, mainDialog.SelectedLine + 1);dialogStack.Add(detailDialog);                navigate();            }}
Touch UI(3)protected override void OnPaint(PaintEventArgs e){base.OnPaint(e);            if(!loaded)        return;dialogStack.Last().Paint(Common.Instance.PaintGraphics);            Rectangle r = Common.Instance.ClientRectangle;            if(animationLeft != 0)            {e.Graphics.DrawImage(Common.Instance.PaintCopyBitmap,                    new Rectangle(animationLeft - r.Width * animationLeft.CompareTo(0), 0, r.Width, r.Height),                    r, GraphicsUnit.Pixel);e.Graphics.DrawImage(Common.Instance.PaintBitmap, new Rectangle(animationLeft, 0, r.Width, r.Height), r, GraphicsUnit.Pixel);animationLeft -= animationOffset;                if(Math.Abs(animationLeft) < Math.Abs(animationOffset))animationLeft = 0;            }            elsee.Graphics.DrawImage(Common.Instance.PaintBitmap, r, r, GraphicsUnit.Pixel);}
Demo오픈 소스 프레임워크
오픈소스(1) Fluid – Windows Mobile 6.x Touch Controlshttp://fluid.codeplex.com/http://www.codeproject.com/KB/mobile/MobilePasswordSafe.aspx
오픈소스(2) - iPhone UI21http://iphoneui.codeplex.com/http://www.codeproject.com/KB/mobile/IPhoneUI.aspx
오픈소스(3) - Alpha Mobile ControlsAlphaBlend() - Alpha Blending 과 Alpha Channel 이용http://blogs.msdn.com/chrislorton/archive/2006/04/07/570649.aspxhttp://www.codeproject.com/KB/mobile/Windows_Mobile_UI.aspx
오픈소스(4) - SilvermoonOpenGL ES 2.0을 이용한 UX 프레임워크http://silvermoon.codeplex.com/
결론윈도우 모바일 UX의 기본적인 디자인 철학과 컨셉트를 이해하라!윈도우 모바일 UX 애플리케이션은 다양한 오픈 소스 프레임워크로 개발 할 수 있다!먼저 윈도우 모바일 UX에 맞게 디자인 설계한 다음 프로토타입을 테스트하라!한 화면에 모든 것을 표현하지 말라!배터리가 없어지거나 전화가 오거나 알람이 울릴 때 등 다양한 이벤트 환경을 고려하여 디자인하라!
Mobile UX for Windows Mobile

More Related Content

PDF
[NEMO-UX] HCIK 2016 다중 사용자용 운영체제 FINE 플랫폼 소개와 SKT 협력 사례 발표
PPTX
Touch Ux With Win32
PPTX
20090910 Windows Marketplace For Mobile
PPTX
20090826 Blackjack Cafe V1.0
PPTX
아키텍처연합회에서 발표한 Enterprise Mobility 2.0
PPTX
KT Show AppStore
PDF
Windows Phone 설치준비서 V1.0
PPTX
네이버 스마트폰 카페 - 윈도우폰7
[NEMO-UX] HCIK 2016 다중 사용자용 운영체제 FINE 플랫폼 소개와 SKT 협력 사례 발표
Touch Ux With Win32
20090910 Windows Marketplace For Mobile
20090826 Blackjack Cafe V1.0
아키텍처연합회에서 발표한 Enterprise Mobility 2.0
KT Show AppStore
Windows Phone 설치준비서 V1.0
네이버 스마트폰 카페 - 윈도우폰7

Similar to Mobile UX for Windows Mobile (20)

PPT
Designing Apps for Motorla Xoom Tablet
PDF
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
PPTX
Tech Update - The Future of .NET Framework (김명신 부장)
PDF
(NEMO-UX) WAYLAND 기반 윈도우 매니저 소개
PDF
[Td 2015]알아두면 핵 이득! vc++로 안드로이드 개발하기(김성엽)
PDF
모바일시대의프로토타이핑 (@웹월드컨퍼런스, 2014.11.19)
PPTX
[27회] 훈스닷넷 윈도우폰 세미나
PDF
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
PDF
윈도우 매니저 스터디: 0.윈도우 매니저 소개
PDF
[Td 2015]70분에 보여준다. 웹표준을 지원하는 edge 브라우저부터 웹 앱 개발까지(김영욱)
PPTX
DEC2010 Track C-2 실버라이트로 시작하는 윈도우폰7의 만남
PPTX
차세대 기업형 브랜드 앱 개발
PPTX
유니버셜 앱의 가능성
PDF
양재혁 포트폴리오 입니다.
PDF
하이브리드 앱(Hybrid App)
PPT
mobile platform
PPT
Mobile Platform
PPTX
C#,자마린실습(Hello 안드로이드,이뮬레이터와 휴대폰에서 직접실행)_닷넷기초/C#기초/자마린,Xamarin 앱개발강좌
PPTX
Windows Phone Apps Story Book #1
PPTX
자바스크립트 디버깅
Designing Apps for Motorla Xoom Tablet
[Td 2015]windows, linux, mac 신경 안 쓴다. .net 2015와 더더 좋아지는 c# 살짝 훔쳐보기(김명신)
Tech Update - The Future of .NET Framework (김명신 부장)
(NEMO-UX) WAYLAND 기반 윈도우 매니저 소개
[Td 2015]알아두면 핵 이득! vc++로 안드로이드 개발하기(김성엽)
모바일시대의프로토타이핑 (@웹월드컨퍼런스, 2014.11.19)
[27회] 훈스닷넷 윈도우폰 세미나
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
윈도우 매니저 스터디: 0.윈도우 매니저 소개
[Td 2015]70분에 보여준다. 웹표준을 지원하는 edge 브라우저부터 웹 앱 개발까지(김영욱)
DEC2010 Track C-2 실버라이트로 시작하는 윈도우폰7의 만남
차세대 기업형 브랜드 앱 개발
유니버셜 앱의 가능성
양재혁 포트폴리오 입니다.
하이브리드 앱(Hybrid App)
mobile platform
Mobile Platform
C#,자마린실습(Hello 안드로이드,이뮬레이터와 휴대폰에서 직접실행)_닷넷기초/C#기초/자마린,Xamarin 앱개발강좌
Windows Phone Apps Story Book #1
자바스크립트 디버깅
Ad

More from Seo Jinho (20)

PPTX
Optimizing windows phone apps
PDF
Windows Phone 7.5 와 Windows 8 메트로 스타일 앱 개발
PDF
Windows Phone Design Camp
PPTX
Windows Phone App Design Guide
PPTX
Windows Phone 7.5 앱 개발 개요
PPTX
Kinect 와 Xbox Live를 통해 알아 본 Windows Phone 7.5 게임 전략
PPTX
아카데미를 위한 Windows Phone 7
PPTX
WP7 마켓플레이스에서 수익창출
PPTX
WP7 Design Guide
PPTX
데브멘토 윈도우폰7 세미나
PPTX
MS N스크린과 클라우드 전략
PPTX
도전! 나도 내일은 윈도우폰 스타!
PPTX
0121 학생아카데미
PPTX
Metro_DesignLanguage
PPTX
윈도우폰7 앱 지금 개발해야 하는 이유
PPTX
차세대 모바일 엔터프라이즈 플랫폼
PPTX
kgc2010 - 차세대 모바일 게임 전략과 WP7
PPTX
MS 차세대 모바일 게임 전략 및 XNA
PPTX
데브멘토 발표세미나
PDF
Windows phone7education
Optimizing windows phone apps
Windows Phone 7.5 와 Windows 8 메트로 스타일 앱 개발
Windows Phone Design Camp
Windows Phone App Design Guide
Windows Phone 7.5 앱 개발 개요
Kinect 와 Xbox Live를 통해 알아 본 Windows Phone 7.5 게임 전략
아카데미를 위한 Windows Phone 7
WP7 마켓플레이스에서 수익창출
WP7 Design Guide
데브멘토 윈도우폰7 세미나
MS N스크린과 클라우드 전략
도전! 나도 내일은 윈도우폰 스타!
0121 학생아카데미
Metro_DesignLanguage
윈도우폰7 앱 지금 개발해야 하는 이유
차세대 모바일 엔터프라이즈 플랫폼
kgc2010 - 차세대 모바일 게임 전략과 WP7
MS 차세대 모바일 게임 전략 및 XNA
데브멘토 발표세미나
Windows phone7education
Ad

Mobile UX for Windows Mobile

  • 1. 오픈소스를 이용한 윈도우 폰 UX애플리케이션 개발서진호 차장 (Jinho.Seo@microsoft.com) 모바일/임베디드 디벨로퍼 에반젤리스트한국 마이크로소프트블로그: http://blogs.msdn.com/jinhoseo커뮤니티: http://www.winmodev.net트위터: @synabreu
  • 2. Agenda윈도우 모바일 6.5 UX 아키텍처개발자들을 위한 요구 사항윈도우 모바일 6.5 DTK에 포함된 터치 및 제스처오픈 소스 프레임워크를 이용한 Apps 개발FruidTouch ControlSilvermoon for OPEG GL ES 윈도우 모바일 UX 애플리케이션 개발 최적화
  • 3. 세계는 지금 모바일 UX 전쟁?모바일 UX의 스마트폰 얼굴이기 때문에!하드웨어보다는 소프트웨어 차별화 시대로!
  • 4. CES’2010 에서 본 윈도우 모바일 UX출처: WMPowerUser
  • 5. 왜 폰에서 사용자 경험이 중요한가?더 뛰어난 그래픽 사용자 경험직관적인/생산적인 Phone UI더 나은 인터넷 브라우징 (모바일/데스크톱)끊김없는 연결성더 나은 멀티미디어 경험오피스 도구와의 통합
  • 6. Design Concept - InteractionHomeStartInternet ExplorerMobile 66
  • 8. 윈도우폰 애플리케이션 개발 방법Smart Device projectPlatform BuilderC#, VB.NETC/C++HardwareSoftwareApplicationWin32, MFC, ATLOS
  • 9. 윈도우 모바일 6.5 DTK에뮬레이터 이미지, 터치 제스처 및 위젯 API반드시 Windows Mobile 6 SDK 필요
  • 10. 터치 제스처 DTK 에서는 C/C++만, 코드 갤러리에 C#용http://code.msdn.microsoft.com/gestureswm동작원리제스처는 마우스 메시지가 아니다.WM_GESTURE 메시지 (GESTUREINFO 구조체 포함)기본 제스처Pan, Scroll (Inertia), Select (Tap), Double-select, Hold컨트롤에서의 터치 제스처 지원ListView및 ListBox (콤보 박스 포함)WebView및 TreeView, Tab (왼쪽에서 오른쪽으로 스크롤링)Managed WrapperGestureRecognizerPhysicsEngineAutoGestureContext
  • 11. 터치 제스처 동작원리 GESTUREINFOGF_INERTIAGF_BEGIN종류에 따라(Gesture IDs)GF_ENDGID_BEGIN = 1GID_END = 2GID_PAN = 4GID_SCROLL = 8GID_HOLD = 9GID_SELECT = 10GID_DOUBLESELECT = 11GID_LAST = 11
  • 12. Managed WrapperGestureRecognizerhttp://code.msdn.microsoft.com/gestureswmPhysicsEngine자연스러운 스크롤링을 할 수 있음스크롤링시 rubber-band 효과 제공Animation point 의 스트림 생성AutoGestureContext 자동적인 제스처 핸들링 및OwnerAnimate이벤트 핸들러 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) => …
  • 14. 왜 오픈 소스 프레임워크인가?창조적인 아이디어를 빠르게 구현하기 위해!!개발한 소스를 재활용 하기 위해!!멀티 장치 디스플레이에도 동일하게 동작하기 위해글로벌 언어 및 리소스를 편리하게 관리
  • 15. Touch UI Chris 가 개발한 Touch UI for Windows Mobile 6.1/6.5http://touchui.codeplex.com/http://blog.wmdev.net/
  • 16. Touch UI(1)private void MainForm_Load(object sender, EventArgs e){dialogStack = new List<Dialog>();MainDialogmainDialog = new MainDialog(Common.Instance.ScreenFactor, Common.Instance.ClientRectangle);mainDialog.Selected += new EventHandler(dialogSelected);dialogStack.Add(mainDialog); navigate(); timer = new Timer();timer.Interval = 80; // 12.5 fpstimer.Tick += new EventHandler(timer_Tick);timer.Enabled = true; loaded = true;}private void MainForm_Activated(object sender, EventArgs e){ if(loaded) timer.Enabled= true;}private void MainForm_Deactivate(object sender, EventArgs e){ if(loaded) timer.Enabled = false;}
  • 17. Touch UI(2) – Scroll Up/Downprivate void MainForm_MouseUp(object sender, MouseEventArgs e) {dialogStack.Last().MouseUp(new Point(e.X, e.Y)); }…..private void MainForm_KeyDown(object sender, KeyEventArgs e) {dialogStack.Last().KeyDown(e);}….private void navigateForward() { if(dialogStack.Last() is MainDialog) {MainDialogmainDialog = (MainDialog)dialogStack.Last();DetailDialogdetailDialog = new DetailDialog(Common.Instance.ScreenFactor, Common.Instance.ClientRectangle, mainDialog.SelectedLine + 1);dialogStack.Add(detailDialog); navigate(); }}
  • 18. Touch UI(3)protected override void OnPaint(PaintEventArgs e){base.OnPaint(e); if(!loaded) return;dialogStack.Last().Paint(Common.Instance.PaintGraphics); Rectangle r = Common.Instance.ClientRectangle; if(animationLeft != 0) {e.Graphics.DrawImage(Common.Instance.PaintCopyBitmap, new Rectangle(animationLeft - r.Width * animationLeft.CompareTo(0), 0, r.Width, r.Height), r, GraphicsUnit.Pixel);e.Graphics.DrawImage(Common.Instance.PaintBitmap, new Rectangle(animationLeft, 0, r.Width, r.Height), r, GraphicsUnit.Pixel);animationLeft -= animationOffset; if(Math.Abs(animationLeft) < Math.Abs(animationOffset))animationLeft = 0; } elsee.Graphics.DrawImage(Common.Instance.PaintBitmap, r, r, GraphicsUnit.Pixel);}
  • 20. 오픈소스(1) Fluid – Windows Mobile 6.x Touch Controlshttp://fluid.codeplex.com/http://www.codeproject.com/KB/mobile/MobilePasswordSafe.aspx
  • 21. 오픈소스(2) - iPhone UI21http://iphoneui.codeplex.com/http://www.codeproject.com/KB/mobile/IPhoneUI.aspx
  • 22. 오픈소스(3) - Alpha Mobile ControlsAlphaBlend() - Alpha Blending 과 Alpha Channel 이용http://blogs.msdn.com/chrislorton/archive/2006/04/07/570649.aspxhttp://www.codeproject.com/KB/mobile/Windows_Mobile_UI.aspx
  • 23. 오픈소스(4) - SilvermoonOpenGL ES 2.0을 이용한 UX 프레임워크http://silvermoon.codeplex.com/
  • 24. 결론윈도우 모바일 UX의 기본적인 디자인 철학과 컨셉트를 이해하라!윈도우 모바일 UX 애플리케이션은 다양한 오픈 소스 프레임워크로 개발 할 수 있다!먼저 윈도우 모바일 UX에 맞게 디자인 설계한 다음 프로토타입을 테스트하라!한 화면에 모든 것을 표현하지 말라!배터리가 없어지거나 전화가 오거나 알람이 울릴 때 등 다양한 이벤트 환경을 고려하여 디자인하라!