[Silverlight] 當麻許的Phone7筆記 - 7.裝置方向(Device Orientation)

2010/12/23

昨天我們敘述有關於 在Windows Phone 7 上面製作樞紐應用程式(Pivot Application)
今天我們來談談有關於硬體裝置方向的功能。
其實微軟在模擬器上面很貼心(當然還是有很多地方尚顯不足),他有做到手機模擬轉方向時的狀態…
讓開發者可以在進行處理在裝置不同轉向的時候,需要做的處理。

網路上看到文獻,XNA開發預設是用橫向的,而Silverlight 則是直向的(看過去範例也知道..XD)…
當然接下來我只會用Silverlight 這邊的方式..因為我目前也只會Silverlight…(殘念

首先我們先開啟一個專案來觀察一下…


打開 Windows Phone Application 類型專案,並且取個名字,範例名稱為 : SampleDeviceOrientation
blog-90

觀察一下預設的XAML Code(預設註解的Code我先刪除) :

blog-92
其中有兩個屬性跟方向有關一個是 SupportedOrientations 另外一個是 Orientation
預設皆為 Portrait(直式) …

SupportedOrientations 的屬性有三個,此屬性你可以想說是你的APP頁面是支援哪一種方向擺放的顯示方式
Portrait 直式/預設的
Landscape 橫式



PortraitOrLandscape 上面兩者皆支援


Orientation 的屬性如下:


None

沒有指定方向

Portrait

直向

Landscape

橫向

PortraitUp

直向

PortraitDown

橫向(似乎目前無效)

LandscapeLeft

橫向且頁面的頭旋轉到左邊

LandscapeRight

橫向且頁面的頭旋轉到右邊



此屬性是指你的APP啟動時是用何種方式呈現,如果您是用橫式呈現,就必須要配合
SupportedOrientations 一起調整

如果沒有一起調整在Visual Studio 會這樣提醒你…
blog-94

接下來我們來實做一個例子,在APP轉向時,我們來改變 TextBlock 裡面的字,顯示現在使用者的手持裝置的Orientation狀態

首先:
1.先得把 SupportedOrientations 屬性改成直向/橫向 都支援的 PortraitOrLandscape
2.我在ContentPanel 內加入一個 TextBlock 命名為  Orientation 選轉時的變化…
3.我在 PhoneApplicationPage 中加入 OrientationChanged 的事件

blog-98

C# Code :


using Microsoft.Phone.Controls;

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

        private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
        {
            this.txtOrient.Text = (e.Orientation.ToString()); 
        }
    }
}


執行結果:

橫向,頁面頂部向左 :
blog-96

橫向,頁面頂部向右:
blog-97

直向:
blog-99


這樣可以觀察初期變化跟 Orientation 的狀態,當然一般設計APP很少設計都支援的…
但是有時候如果有這樣的設計或是需求,可以靠這方法去偵測並且做出最好的呈現給使用者…
快要天亮了,晚安先睡了…


讚一下:

檔案下載:


0 意見:

程式 . 生活 . D小調.@2010 | Binary Design: One Winged Angel.