在手机应用程序开发过程中我们时常的要面对着这样的一个问题:就是程序的横竖屏的问题,我们要让我们的应用程序获得更好的用户体验就必须在用户无论是竖屏还是横屏显示的一些效果还是完好的,没有变样,我们知道在Android里我们可以通过Activity的android:orientations来强制的设置应用程序显示的方式是为横屏还是竖屏,同样在Windows phone7也存在着类似的这样的属性:SupportedOrientations
设置应用屏幕显示的方式有两种:
1.可以在.xaml文件中添加如下的属性:
SupportedOrientations="PortraitOrLandscape"
其值还有:
属性值
|
含义
|
Portrait
|
表明应用程序可能支持的方向是竖屏
|
Landscape
|
表明应用程序可能支持的方向是横屏
|
PortraitOrLandscape
|
两种都支持
|
2.可以在页面的加载事件中指定属性
private voidPhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
this.SupportedOrientations= SupportedPageOrientation.PortraitOrLandscape;
}
示例:通过属性来设置
在MainPage.xaml中用如下的代码,其中SupportedOrientations的值设置为PortraitOrLandscape
<phone:PhoneApplicationPage
x:Class="OrientationsDemo.MainPage"
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"
mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"
shell:SystemTray.IsVisible="True" Loaded="PhoneApplicationPage_Loaded">
<!--LayoutRoot 是包含所有页面内容的根网格-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!--TitlePanel 包含应用程序的名称和页标题-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="我的应用程序" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="方向改变" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<ScrollViewer Grid.Row="1" Name="scrollViewer1" VerticalScrollBarVisibility="Auto">
<StackPanel Background="Transparent" >
<!--Adding various controls and UI elements.-->
<Button Content="This is a Button" />
<Rectangle Height="100" Name="rectangle1" Stroke="Black" StrokeThickness="1" Width="116" Fill="#FFBE2C2C" HorizontalAlignment="Left" />
<Rectangle Fill="#FF762A2A" Height="100" Name="rectangle2" Stroke="Black" StrokeThickness="1" Width="121" HorizontalAlignment="Center" />
<Rectangle Height="100" Name="rectangle3" Stroke="Black" StrokeThickness="1" Width="134" Fill="#FF3C8ABA" HorizontalAlignment="Right" />
<TextBox Height="71" Name="textBox1" Text="TextBox" Width="460" />
<TextBox Height="71" Name="textBox2" Text="TextBox" Width="460" />
<TextBox Height="71" Name="textBox3" Text="TextBox" Width="460" />
</StackPanel>
</ScrollViewer>
</Grid>
<!--演示 ApplicationBar 用法的示例代码-->
<!--<phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
<shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="按钮 1"/>
<shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="按钮 2"/>
<shell:ApplicationBar.MenuItems>
<shell:ApplicationBarMenuItem Text="菜单项 1"/>
<shell:ApplicationBarMenuItem Text="菜单项 2"/>
</shell:ApplicationBar.MenuItems>
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>-->
</phone:PhoneApplicationPage>
实现的效果为:


示例:通过代码动态的来改变布局方式从而来达到同样的效果
在MainPage.xaml文件中放入以下的代码:
<phone:PhoneApplicationPage
x:Class="OrientationsDemo.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="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"
mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
shell:SystemTray.IsVisible="True"OrientationChanged="PhoneApplicationPage_OrientationChanged">
<!--LayoutRoot 是包含所有页面内容的根网格-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!--TitlePanel包含应用程序的名称和页标题-->
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="我的应用程序" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="页面名称" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<!--ContentPanel- 在此处放置其他内容-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image x:Name="Image1" Grid.Row="0" Grid.Column="0" Stretch="Fill" HorizontalAlignment="Center" Source="/OrientationsDemo;component/images/image01.jpg" Height="300" Width="500"/>
<!--Add aStackPanel with buttons to the row beneath the image.-->
<StackPanel x:Name="buttonList" Grid.Row="1" Grid.Column="0" HorizontalAlignment="Center" >
<Button Content="Action1" />
<Button Content="Action2" />
<Button Content="Action3" />
<Button Content="Action4" />
</StackPanel>
</Grid>
</Grid>
<!--演示 ApplicationBar 用法的示例代码-->
<!--<phone:PhoneApplicationPage.ApplicationBar>
<shell:ApplicationBar IsVisible="True"IsMenuEnabled="True">
<shell:ApplicationBarIconButtonIconUri="/Images/appbar_button1.png" Text="按钮 1"/>
<shell:ApplicationBarIconButtonIconUri="/Images/appbar_button2.png" Text="按钮 2"/>
<shell:ApplicationBar.MenuItems>
<shell:ApplicationBarMenuItemText="菜单项 1"/>
<shell:ApplicationBarMenuItem Text="菜单项 2"/>
</shell:ApplicationBar.MenuItems>
</shell:ApplicationBar>
</phone:PhoneApplicationPage.ApplicationBar>-->
</phone:PhoneApplicationPage>
然后在MainPage.xaml.cs文件中写下如下的代码:
这里是做了判断的 用于来获取屏幕的方向,我们来设置Grid里旋转的控件的位置
if((e.Orientation & PageOrientation.Portrait)== (PageOrientation.Portrait))
{
Grid.SetRow(buttonList, 1);
Grid.SetColumn(buttonList, 0);
}
// If not in the portrait mode, move buttonList content toa visible row and column.
else
{
Grid.SetRow(buttonList, 0);
Grid.SetColumn(buttonList, 1);
}
实现的效果:


为了一个对比的学习方法,我们知道在Android中屏幕方向的改变会导致Activity的生命周期函数会发生一些改变,而在Windows phone是讲的应用程序生命周期,所以经过测试,其应用程序生命周期函数并未发生什么大的变化
如需转载引用请注明出处:http://blog.csdn.net/jiahui524
分享到:
相关推荐
【Windows Phone开发教程1】 Windows Phone是一款由微软在2010年10月推出的手机操作系统,旨在与Android和iOS...随着Windows Phone在中国和其他地区的逐渐普及,了解和掌握Windows Phone开发将是一个值得投资的方向。
在Windows Phone 7平台上开发应用程序时,我们可能会遇到创建自定义时钟的需求。"Windows Phone 7时钟实例"是一个示例项目,它演示了如何使用C#(CS)代码来构建一个模拟真实钟表界面的时钟应用。这个实例特别关注在...
在Windows Phone 8开发中,Panorama布局是一种广泛使用的用户界面设计模式,它为用户提供了一个全屏、滑动浏览的视图,可以展示多个并排的内容区域,类似于电视屏幕上切换不同频道的效果。Panorama布局非常适合展示...
### Windows Phone 7 高级编程:XNA游戏开发概览 #### 1. 游戏循环的理解 在深入探讨Windows Phone 7的XNA框架之前,重要的是要理解其核心概念之一:游戏循环(game loop)。游戏循环是游戏开发中的关键机制,它...
在Windows Phone 7开发中,`Brush`类是绘制图形和填充颜色的核心工具。它提供了丰富的功能,使得开发者能够创建出各种美观且富有表现力的用户界面。在本示例中,我们关注的是如何利用`Brush`来实现实线图形、渐变...
ParticleSample (Xbox).sln, ParticleSample (Windows).sln**:这些是Visual Studio解决方案文件,分别对应Windows Phone、Xbox和Windows平台的项目,开发者可以使用它们在对应的开发环境中打开并编译源代码。...
在Windows Phone 8开发中,动态布局更改是一个关键特性,它允许应用程序自适应不同设备方向,如横屏或竖屏,以提供最佳的用户体验。这一功能主要依赖于XAML(Extensible Application Markup Language)和数据绑定...
依赖属性是 WPF 中的核心特性之一,用于支持数据绑定、动画等高级功能。在本示例中,`Canvas.LeftProperty` 就是一个依赖属性,用来表示元素在水平方向上的位置。 ### 3. 动画与双精度动画 (`DoubleAnimation`) ##...
FastReport是一款强大的报表设计和打印工具,主要应用于.NET Framework和.NET Core环境,广泛用于Windows Forms、ASP.NET、WPF以及Windows Phone等平台。这个“FastReport中文开发指南”旨在为开发者提供详尽的指导...
Windows Phone 7 开发是移动应用领域的重要组成部分,本教程将深入讲解如何在这一平台上处理屏幕方向变化及动态布局,确保应用在不同方向下都能提供良好的用户体验。 在Windows Phone 7中,应用程序通常以竖屏...
【WP_第4章_特性_Demo】是NEIC针对Windows Phone平台进行的一次技术培训资料,主要聚焦在Windows Phone应用程序开发中的各种特性和实战演示。这个培训涵盖了多个关键主题,旨在帮助开发者深入理解并熟练运用Windows ...
- **XNA4.0**:是微软推出的一个跨平台游戏开发框架,主要支持XBox360、Windows PC和Windows Phone等多个平台的游戏开发。 - **改进的项目文件夹结构**:新的文件夹组织方式有助于开发者更好地管理和分类项目中的...
在Windows Phone 8平台上开发应用程序时,为了提供更好的用户体验,开发者需要考虑应用的本地化,以便全球用户可以理解和使用。本地化不仅包括语言翻译,还包括适应不同地区的文化习惯和规范。本篇文章将深入探讨...
- **C#:** Windows Phone平台的主要开发语言。 **移动应用测试:** - **功能测试:** 验证应用的各项功能是否按预期工作。 - **用户界面测试:** 确保界面元素正确显示且易于操作。 - **性能测试:** 测试应用的...
在本文中,我们将深入探讨如何使用WPF(Windows Presentation Foundation)和C#来实现一个仿iPhone消息发送功能,包括创建消息气泡以及设置其背景。WPF是.NET Framework中的一个强大的用户界面框架,它提供了丰富的...
【标题】"iPhone-like-Scroll.zip" 是一个基于Visual Basic的项目,...通过分析和理解这些文件,开发者可以学习到如何在VB中创建自定义的交互效果,以及如何提升Windows应用的用户体验,使之更接近移动设备的交互模式。
XNA是Microsoft推出的一个跨平台游戏开发工具集,支持在PC、Xbox360和WindowsPhone上开发游戏。本书不仅适用于个人学习,也是教育机构如诺门大学(Neumont University)和法国游戏与互动媒体研究生院(ENJMIN)推荐...
在未来的直播APP开发中,结合Cocos2d-x游戏引擎的动画解决方案将是一个值得深入研究和实践的方向。 总结而言,Cocos2d-x游戏引擎为直播类APP的动画设计提供了全新的视角和解决方案,通过其强大的动画API、跨平台...