반응형

안녕하세요

또 오랜만에 포스팅을 하네요.


저번 포스트에도 이야기 했듯이 오늘부터

http://charlespetzold.com/phone/

의 pdf의 자료 중 제가 필요하다 생각되는 부분들을 부분부분 포스팅 해볼까 합니다.


물론 전부다 포스팅 할 필요는 없어 보입니다.

저 책의 코딩 방식 마저 하드코딩 위주이기 때문에

툴을 사용하는 사람들을 위한 배려가 조금 결여되어있는 것은 사실입니다.

툴만 사용해서도 가능하다 라는 게 저 책의 내용과 이 포스팅 과의 차이가 되겠습니다.


오늘 포스팅 할 것은

Screen Orientataion

입니다.


한글로 단어를 명확하게 찾기 뭣하군요. 단어 그대로 풀어보자면 “스크린이 놓인 상태”를 이야기 합니다.

눈치 빠르시니 다들 무엇을 이야기 하는지 아셨으리라 봅니다.

윈도우즈 폰 7 을 사용할 때 옆으로 뉘였을 때 그리고 다시 새웠을, 다시 뉘였을 때 등

상태를 제어 하는 방법에 대한 포스팅이 되겠습니다.



자 그럼 하던 대로 따라 해 봅시다.

저는 이렇게 프로젝트를 만듭니다.




디버그로 한번 살펴 보도록 합시다. 요로케~




이 상태가 대게 디폴트 화면입니다. 세로 화면을 Portrait 라고 합니다.

인쇄 쪽 영문 설정 페이지를 보시면 이 단어를 볼 수 있습니다.




아래의 상태인 가로 화면을 Landscape 라고 합니다.




Portrait에서 Landscape로 바꾸었으나

현재 페이지는 페이지의 꼭대기가 기기의 위 끝으로 하는 구성으로 누워 버렸습니다.

이유는 단순합니다. 프로그램의 기본 설정의 Orientation이 Portrait 이기 때문이죠.



MainPage.xaml 파일에 관련 설정이 아래와 같이 보입니다.




SupportedOrentations
가 현재 프로그램이 지원하는 Orientation 값 이며

Orientation 이 현재의 Orientation을 나타내는 값 입니다. 따라서 따로 코딩 하지 않으면 Portrait가 디폴트네요.



이제 이것을 Portrait, Landscape 둘 다 지원하게 설정하겠습니다.




보시다시피 아주 쉽죠. PortraitOrLandscape 값이 우리가 원하는 그 값입니다.

이 설정을 하면 페이지는 해당 모드를 인지하고 항상 위에서 아래로 출력이 됩니다.

동작하는 것은 디버그(F5)로 확인 해 보세요.




예제프로그램으로 Orientation 값을 가져오는 법과 그 데이터를 알아보도록 하겠습니다.
하드코딩이 아닌 디자이너를 통한 방법입니다.



디자이너를 잘 보시면 아래와 같은 아이콘이 보입니다.

이 아이콘이 현재 어플리케이션을 가리키고 있습니다.

마우스 우측버튼을 눌러 Properties를 선택 합시다.




Properties 탭 옆에 Events 탭(번개 아이콘)을 누르면 아래와 같은 화면을 볼 수 있습니다.

PhoneApplicatio… <no name>

이라 되어있습니다. 줄임 말은 늘려도 안보이죠?

저 녀석이 PhoneApplicationPage 입니다.

어떻게 아냐구요?  일단 따라가 봅시다. 그럼 알 밖에 없는 값을 보여드리죠.




빨간 화살표가
Loaded 즉, 해당 어플리케이션이 로딩되었을 때 발생하는 이벤트가 되겠습니다.

파란 화살표가 OrientationChanged 즉, Orientation이 변경되었을 때 발생하는 이벤트가 되겠습니다.



이벤트 메서드 생성은 빈 상자 영역을 더블클릭 하시면 됩니다. 둘 다 하시구요~

물론 저 부분을 하드코딩도 가능하며, 메서드 명을 바꿀 수 있고 그 기능으로,

또한 다른 이름의 동일한 컨트롤들의 중복되는 이벤트를 하나의 메서드로 통합 할 수도 있습니다.

다음에 때가 되거나 필요가 있으면 포스팅 해보도록 하죠 ㅎㅎ



해당 이벤트 메서드가 생성이 되면 비하인드 코드 영역으로 들어가게 됩니다.

그전에 MainPage.xaml을 보세요!




이벤트를 등록하자 마자 PhoneApplicationPage 아래

Loaded="PhoneApplicationPage_Loaded" OrientationChanged="PhoneApplicationPage_OrientationChanged"

이벤트 명에 이벤트 메서드 가 선언이 되었죠?

이러니 PhoneApplicationPage가 아까 그 Property의 명이라고 할 수 밖에 없는 겁니다.



자 그럼 코드를 계속 구성 해  봅시다.

저는 아래와 같이 구성했습니다.



using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using Microsoft.Phone.Controls;

namespace ScreenOrientation
{
    public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();
        }

        #region private void PhoneApplicationPage_Loaded
        /// <summary>
        /// 어플리케이션 페이지가 로드 되었을 때
        /// </summary>
        private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
        { // 현재의 Oriendataion 을 문자열로 가져와서 so.Text에 할당하여 표출.
            so.Text = this.Orientation.ToString();
        }
        #endregion

        #region private void PhoneApplicationPage_OrientationChanged
        /// <summary>
        /// 어플리케이션의 Orientation이 바뀌었을 때
        /// </summary>
        private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
        { // 현재의 Oriendataion 을 문자열로 가져와서 so.Text에 할당하여 표출.
            so.Text = this.Orientation.ToString();
        }
        #endregion
    }
}



따로 설명할 것이 없네요. 간단한 코드니까요.

대신 주석으로 하는 행위에 대한 것을 추가 해 놓았습니다.



그럼 디버그로 에뮬레이터에서 확인해 봅시다.




Portrait 상태는 Orientation값으로는 PortraitIUp 이군요.


 



왼쪽으로 머리가 가게 하면 Orientation값으로는 LandscapeLeft 군요.




오른쪽으로 머리가 가게 하면 Orientation값으로는 LandscapeRight 군요.




에뮬레이터로는 PortraitDown 이 보이지 않습니다.

기기가 없으니 확인해 볼 방법은 없네요.



하지만 PageOrientation 의 값을 살펴보면 존재하는 값임은 확인이 가능합니다.




 

자 그럼 Screen Orientation 에 대한 것은 이해가 되었으리라 보고 이만 마치겠습니다.

반응형
반응형


아이폰4 발송현황 보는 법을 잠시 포스팅 -ㅅ-(매번 검색하기 귀찮아서...)

1. 16G, 32G 아래 링크를 타고 가면 발송중인 차수를 볼 수 있음
http://phonestore.show.co.kr/handler/Presale-Send

2. 관련 발송 예정 또는 긴급 공지 등이 올라오는 게시판( 위 사이트에 중앙에 있어서 못 찾을 수 있음)
http://phonestore.show.co.kr/handler/Customer-Notice


윈도우즈 폰 7 어플은 에뮬이 좋아서 국내 출시전에도 어느정도 개발이 가능하며
안드로이드는 에뮬이 좀 늦긴하지만, 게다가 안드로이드 탑재 소형기기들이 구지 통신사 끼지 않아도 나오니 그 제품을 구매하면되고
남은건 심비안과 아이폰용 어플 뿐인데...
심비안은 국내 비주류니.. 거기다 Microsoft가 윈도우즈 폰 7 까지 내 놓은 상황이니 심비안에 신경 쓸 일도 없고 해서 pass~

그렇게 준비한 아이폰 4 가 이번주 수요일 발송 예정이네요

아.. 이제 남은것은 맥OS탑재한 노트북이나 맥을 중고로 구하는 일 뿐인가..
이 이상 취미생활은 무리입니다 (출혈이 너무 크네요 ㅎㅎ)

반응형

+ Recent posts