本文簡單介紹Windows Phone 7的螢幕方向,以及螢幕方向變更時所做的處理。
Windows Phone 7的螢幕方向分為垂直方向和水平方向,但與之前Windows Mobile可以旋轉4個角度不同,Windows Phone 7垂直方向只有一種方向。還是用圖說的比較清楚:
1.垂直方向:
垂直方向不支援180度的旋轉了,想想也是,沒幾個人習慣把手機倒著用。
2.水平方向:
水平方向需要注意一下,水平方向分為左水平方向和右水平方向,這是由於螢幕下部的ApplicationBar(應用工具列)會根據該方向改變,ApplicationBar緊挨著電話的三個按鍵一側:
左水平方向 右水平方向
注意,系統托盤的方向也改變了,即顯示時間的那一條。
一般情況下,程式都要考慮螢幕方向的頁面配置,要做出響應的處理,更要注意左水平方向和右水平方向的差異。
在項目中,添加新的頁面時,就可以選擇螢幕的方向:
PhoneApplicationPage頁面屬性Orientation可以設定應用程式頁面初始的方向,不過該屬性不能在代碼中設定,我試了一下,在代碼中可以設定該屬性,但是螢幕的方向沒有改變。那怎樣讓UI適應旋轉螢幕呢?PhoneApplicationPage的SupportedOrientations屬性來設定,但不要根據代碼修改螢幕的顯示方式。
SupportedPageOrientation.Landscape 支援水平方向
SupportedPageOrientation.Portrait 支援垂直方向
SupportedPageOrientation.PortraitOrLandscape 支援水平和垂直方向(頁面會在電話旋轉時自動選擇相應的整頁模式)
樣本
下面的樣本示範螢幕方向的設定及變更處理:
建立一個Windows Phone 7的應用程式,
首先在Page中放入一個TextBlock,將其Text屬性設定為垂直。
1 |
< TextBlock Height = "36" HorizontalAlignment = "Left" Margin = "150,127,0,0" Name = "textBlock1" Text = "垂直" VerticalAlignment = "Top" TextAlignment = "Center" FontSize = "30" Width = "152" /> |
編譯執行,介面如下:
點擊右側旋轉按鈕,螢幕發生旋轉,當前沒有做任何處理,介面當然不會自適應水平狀態,介面如下:
預設情況下,MainPagePage的SupportedOrientations屬性被設定為Portrait。
在XAML中將SupportedOrientations屬性設定為PortraitOrLandscape。
1 |
SupportedOrientations="PortraitOrLandscape" |
再編譯執行試試,很簡單吧,就一行代碼,螢幕就能自適應旋轉螢幕了 :) 介面如下:
當前螢幕已經是水平狀態了,想要做些處理,比如在TextBlock中顯示“水平”,這時就需要處理旋轉事件了。
在Page中加入OrientationChanged事件的處理。
01 |
private void PhoneApplicationPage_OrientationChanged( object sender, OrientationChangedEventArgs e) |
03 |
if (PageOrientation.LandscapeLeft == e.Orientation) |
05 |
textBlock1.Text = "水平(左)" ; |
07 |
else if (PageOrientation.LandscapeRight == e.Orientation) |
09 |
textBlock1.Text = "水平(右)" ; |
13 |
textBlock1.Text = "垂直" ; |
這樣旋轉螢幕,TextBlock中的文字就會做出相應的改變了。旋轉螢幕的相關操作,都可以在該事件響應中處理。
介面如下:
代碼下載