Windows Phone开发:处理屏幕方向的改变

2015-09-30 14:32:13来源:作者:人点击

俺们都知道,智能手机可以通过旋转手机来改变屏幕的显示方向,更多的时候,对于屏幕方向的改变,我们要做出相应的处理,例如,当手机屏幕方向从纵向变为横向时,可能要重新排列页面上的控件以适应显示区域的变化。

前面我们讨论过,Silverlight for Windows Phone的页面布局有三个常用的布局控件,那么,当屏幕方向改变后,我们所做的对布局的更改基础上是基于这几个容器进行的操作。本文我将通过三个示例来分别说明。开始之前,先说一下PhoneApplicationPage类的 OrientationChanged事件,该事件就是当屏幕的方向改变之后发生,我们从事件参数 OrientationChangedEventArgs类的实例的Orientation属性中获取当前屏幕的方向,即改变后的方向,比如,原来屏幕是 纵向,现在我把手机屏幕改为横向,则Orientation属性获取到的方向就是横向的,呵呵,当然也包括从哪个方向旋转过来的,这里只是举例而已。

要使页面支持旋转,要把PhoneApplicationPage的SupportedOrientations属性改为PortraitOrLandscape,然后可以通过定义OrientationChanged事件来处理布局。形如:

<phone:PhoneApplicationPage..............SupportedOrientations="PortraitOrLandscape"Orientation="Portrait"OrientationChanged="PhoneApplicationPage_OrientationChanged">一、Grid控件的处理。<phone:PhoneApplicationPagex:Class="Sample_PageDir.Page1"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"xmlns:d="http://schemas.microsoft.com/expression/blend/2008"xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"FontFamily="{StaticResourcePhoneFontFamilyNormal}"FontSize="{StaticResourcePhoneFontSizeNormal}"Foreground="{StaticResourcePhoneForegroundBrush}"mc:Ignorable="d"d:DesignHeight="768"d:DesignWidth="480"shell:SystemTray.IsVisible="True"SupportedOrientations="PortraitOrLandscape"Orientation="Portrait"OrientationChanged="PhoneApplicationPage_OrientationChanged"><Gridx:Name="layoutRoot"><Grid.RowDefinitions><RowDefinitionHeight="Auto"/><RowDefinitionHeight="Auto"/></Grid.RowDefinitions><Grid.ColumnDefinitions><ColumnDefinitionWidth="Auto"/><ColumnDefinitionWidth="Auto"/></Grid.ColumnDefinitions><Imagex:Name="img"Source="http://gubapic.eastmoney.com/member/e68/e681999/e68199920091216131540.jpg"Stretch="UniformToFill"Width="270"Grid.Row="0"Grid.Column="0"/><TextBlockx:Name="txtBlock"Grid.Row="1"Grid.Column="0"FontSize="70"Margin="28"><RunForeground="Coral">信春哥</Run><LineBreak/><RunForeground="Yellow">唱情歌</Run><LineBreak/><RunForeground="SkyBlue">不挂科</Run></TextBlock></Grid></phone:PhoneApplicationPage>

页面主要有两个控件,一个用于显示图片,一个用于显示文本信息,通过事件处理代码来相应改变两个控件的布局。

privatevoidPhoneApplicationPage_OrientationChanged(objectsender,OrientationChangedEventArgse){//如果是横向的if(e.Orientation==PageOrientation.Landscape||e.Orientation==PageOrientation.LandscapeLeft||e.Orientation==PageOrientation.LandscapeRight){Grid.SetColumn(this.img,0);Grid.SetRow(this.img,0);Grid.SetRow(this.txtBlock,0);Grid.SetColumn(this.txtBlock,1);}//如果是纵向elseif(e.Orientation==PageOrientation.Portrait||e.Orientation==PageOrientation.PortraitDown||e.Orientation==PageOrientation.PortraitUp){Grid.SetColumn(this.img,0);Grid.SetRow(this.img,0);Grid.SetRow(this.txtBlock,1);Grid.SetColumn(this.txtBlock,0);}else{Grid.SetColumn(this.img,0);Grid.SetRow(this.img,0);Grid.SetRow(this.txtBlock,1);Grid.SetColumn(this.txtBlock,0);}}

按F5运行程序,默认的屏幕方向是纵向的,如下图所示:

好,现在,我们把屏幕旋转一下,看看会怎么样。

别走开,下页更精彩

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台