2011-03-30 83 views
2

有沒有像protected override void OnOrientationChanged(OrientationChangedEventArgs e)這樣的方法SupportedOrientations="Portrait"是否有類似於OnOrientationChanged的方法?

我試圖做的是落實一些手勢,如:

  • 用戶旋轉手機景觀左側位置和一些代碼被執行
  • 用戶旋轉手機景觀正確的位置和一些其他代碼被執行

我的應用程序是PortraitUp取向。當我設置SupportedOrientations="PortraitOrLandscape"時,內容開始旋轉。

或者我應該使用加速度計來處理手機位置?

回答

3

這聽起來像你是加速度計後,有在CodePlex上可用的幾個助手這可能會給你一條腿:

http://accelerometer.codeplex.com/ - 對於理解發生了什麼事情與加速度計 http://phone7actionpack.codeplex.com/視覺輔助 - 包括當電話旋轉時改變視覺狀態行爲。

+0

正如您所發佈的,加速計是唯一合理的解決方案。幸運的是,這很容易處理。感謝您的鏈接。對我來說,看到微軟的[accelerometer示例。](http://msdn.microsoft.com/zh-cn/library/ff431744(v = vs.92).aspx) – Maku 2011-03-30 20:47:56

2

聽起來好像你是在「OnOrientationChangedToLandscapeLeft」類型事件(以及類似的)之後。
這並不存在,但你可以使用存在的東西來創建它。

OnOrientaionChanged事件中,您可以通過檢查e參數並相應地執行相關代碼來檢測屏幕旋轉的方式。
類似於:

if (e.Orientation == PageOrientation.LandscapeLeft) 
{ 
    // Do whatever you want to here 
} 
else if (e.Orientation == PageOrientation.LandscapeRight) 
{ 
    // Do something else here 
} 
else 
... 
+0

唯一的問題是'OnOrientaionChanged '當頁面方向改變時觸發。我的應用程序是'SupportedOrientation =「Portrait」Orientation =「PortraitUp」和「OnOrientationChanged」永遠不會啓動。我不想將'SupportedOrientations'更改爲''PortraitOrLandscape'',因爲內容開始旋轉,而且看起來不太好,尤其是手機旋轉假設是一種手勢。 – Maku 2011-03-30 15:32:32

+1

@Maku我創建了一個應用程序,它始終顯示爲縱向,但使用上述方法來改變內部更改的方向。通過使用RotationTransforms,它使所有內容看起來仍然像在畫像中一樣。不是最優雅的解決方案,但它的工作原理。 – 2011-03-31 08:29:15

+0

你剛剛回答我的...... [另一個問題!](http://stackoverflow.com/questions/5116687/navigate-to-another-page-when-orientation-changed)非常感謝你的貢獻! – Maku 2011-04-01 15:57:45

相關問題