Windows Phone 7 開發 31 日談——第4日:設備方向

By Jeff Blankenburg

本文是Windows Phone 7 開發 31 日談” 系列的第4日。

 

    昨天我們討論了Windows Phone的一個專用硬件按鈕——返回鍵.今天我們聚焦另一個硬件特性:設備方向。

 

縱向和橫向

    這兩個術語區別並不太明顯,縱向是設備的垂直方向,橫向是水平方向。這兩種方向在Windows Phone 7中都支持,但默認情況下,Silverlight程序以縱向開始,XNA程序以橫向開始(遊戲通常在寬屏下表現會更好)。本篇文章中,我們只討論Silverlight程序,以及方向改變後如何去做,因爲在用戶使用程序時方向的變化是不可避免的。

 

默認項目是“只支持縱向的”

    如果你看一下MainPage.xaml文件的頭部信息,會發現兩個屬性:SupportedOrientations="Portrait" Orientation="Portrait"

    可以將SupportedOrientations想象成你準備在程序中支持的可能發生的情況的列表。你可以將SupportedOrientations設置成以下3個值中的任意一個:

  • Portrait (默認值)
  • Landscape
  • PortraitOrLandscape

Orientation屬性是想讓你的程序在啓動時以何種方式呈現。它有更多的值可選,但記住如果想要以 橫向 模式啓動,你需要將橫向包含到SupportedOrientations中。下面是Orientation值的列表:

  • Landscape
  • LandscapeLeft (將電話向左翻轉)
  • LandscapeRight (將電話向右翻轉)
  • Portrait
  • PortraitDown (正常的豎直方向)
  • PortraitUp (倒置)

你可以看到在上表中不僅可以指定縱向或橫向,還可以指定這些方向的排列方式。這允許你用你喜歡的方向開始你的應用程序。

 

改變方向

    有兩種方式可以改變設備的方向。第一將SupportedOrientation設置爲“PortraitOrLandscape”讓操作系統爲你實現。在大多數情況下,並不推薦這樣做,因爲你的應用程序界面可能不再適應屏幕了。第二種方式是通過代碼實現。我們來看一個例子。

這個簡單的界面佔據了整個豎直方向的屏幕。

clip_image001

clip_image002

    你可以看到在橫向時,很多按鈕不在屏幕之中。這不是理想的用戶體驗。簡單解決方法是去掉標題。我確信我們的用戶可以看出這是一個計算器。我們可以對按鈕進行重新佈局,如果對於程序來說有意義,那就去做!本篇文章的目的是告訴你如何 改變你的程序,而不是告訴你應該改變什麼 。我用了以下的代碼來使標題欄消失和重現(這是MainPage.xaml.cs文件的全部內容):

    因爲我只關注程序是橫向還是縱向(而不是所有的方向),所以同時檢測這兩個狀態並相應地調整界面。你可以將每種情況分開處理使界面看起來不同。

    注意我爲OrientationChanged事件創建的處理程序。這是一個在方向改變時最簡單的識別方法,通常你可以使用將在第11天介紹的加速計。看一下使用新代碼後最終的例子:

clip_image003

下載示例代碼

這不是一個可以使用的計算器,但作爲一個初學者項目你可以試試。歡迎下載這個項目,並添加缺失的功能。

clip_image004

原文地址:http://www.jeffblankenburg.com/post/31-Days-of-Windows-Phone-7c-Day-4-Device-Orientation.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章