本篇博文主要介绍常用支持Windows 8操作系统设备的方向、如何获取当前设备方向、DisplayProperties类。
常用支持Windows 8操作系统设备的方向
在我们常用的设备当中,Windows 8是通过什么来监控设备方向呢?答案是方向传感器,那么对于设备的不同方向,方向传感器都对应哪些方向值呢?如下表:
我们可以从表中知道:
1) 设备方向为水平方向向上(Portrait Up)时,对应传感器值为NotRotated(未发生旋转);
我们可以通过对比设备中Windows按钮的位置来识别不同方向,如下图所示:
2) 设备方向为竖直方向向左(Landscape Left)时,对应传感器值为Rotated90DegreesCounterclockwise(旋转90度);我们可以通过对比设备中Windows按钮的位置来识别不同方向,如下图所示:
3) 设备方向为水平方向向下(Portrait Down)时,对应传感器值为Rotated180DegreesCounterclockwise(旋转180度),我们可以通过对比设备中Windows按钮的位置来识别不同方向,如下图所示:
4) 设备方向为竖直方向向右(Landscape Right)时,对应传感器值为Rotated270DegreesCounterclockwise(旋转270度);我们可以通过对比设备中Windows按钮的位置来识别不同方向,如下图所示:
5) 设备方向为正面朝上(Face Up)时,对应传感器值为Faceup;
6) 设备方向为正面朝下(Face Down)时,对应传感器值为Facedown;
如何获取当前设备方向值
我们如何在代码中获取这么设备方向值呢?
第一步:初始化SimpleOrientationSensor传感器对象。
第二步:注册传感器OrientationChanged事件。
第三步:在OrientationChanged事件方法中通过e. Orientation属性得到方向值。
具体代码可如下:
代码中DisplayOrientation方法如下:
假如我们使用XAML+C#来编写一个游戏类应用,就可以通过监控设备放向值的改变来控制游戏人物的不同状态了。
DisplayProperties类
微软为开发者提供了一个非常重要的类:DisplayProperties。我们获取设备方向值的代码都是通过该类来实现的。
那么DisplayProperties类包含哪些重要事件和属性呢?
1) OrientationChanged事件:当方向变更时该事件被触发;
2) CurrentOrientation属性:该属性为只读属性,获取当前设备的方向;
3) NativeOrientation属性:该属性为只读属性,获取设备默认支持的方向,包含两个值:Landscape和Portrait;
4) AutoRotationPreferences属性:该属性为可读写属性,通过该属性可以读取或设置我们应用的首选方向。注意:模拟器中无法支持该属性的设置。