Windows Phone开发(6):处理屏幕方向的改变 转:http://blog.csdn.net/tcjiaan/article/details/7273107...
俺们都知道,智能手机可以通过旋转手机来改变屏幕的显示方向,更多的时候,对于屏幕方向的改变,我们要做出相应的处理,例如,当手机屏幕方向从纵向变为横向时,可能要重新排列页面上的控件以适应显示区域的变化。
要使页面支持旋转,要把PhoneApplicationPage的SupportedOrientations属性改为PortraitOrLandscape,然后可以通过定义OrientationChanged事件来处理布局。形如:
- <phone:PhoneApplicationPage
- ..............
- SupportedOrientations="PortraitOrLandscape"
- Orientation="Portrait"
- OrientationChanged="PhoneApplicationPage_OrientationChanged">
一、Grid控件的处理。
- <phone:PhoneApplicationPage
- x: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="{StaticResource PhoneFontFamilyNormal}"
- FontSize="{StaticResource PhoneFontSizeNormal}"
- Foreground="{StaticResource PhoneForegroundBrush}"
- mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
- shell:SystemTray.IsVisible="True"
- SupportedOrientations="PortraitOrLandscape"
- Orientation="Portrait"
- OrientationChanged="PhoneApplicationPage_OrientationChanged">
- <Grid x:Name="layoutRoot">
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto" />
- <RowDefinition Height="Auto" />
- </Grid.RowDefinitions>
- <Grid.ColumnDefinitions>
- <ColumnDefinition Width="Auto" />
- <ColumnDefinition Width="Auto" />
- </Grid.ColumnDefinitions>
- <Image x:Name="img" Source="http://gubapic.eastmoney.com/member/e68/e681999/e68199920091216131540.jpg" Stretch="UniformToFill" Width="270" Grid.Row="0" Grid.Column="0" />
- <TextBlock x:Name="txtBlock"
- Grid.Row="1"
- Grid.Column="0"
- FontSize="70"
- Margin="28">
- <Run Foreground="Coral">信春哥</Run>
- <LineBreak/>
- <Run Foreground="Yellow">唱情歌</Run>
- <LineBreak/>
- <Run Foreground="SkyBlue">不挂科</Run>
- </TextBlock>
- </Grid>
- </phone:PhoneApplicationPage>
页面主要有两个控件,一个用于显示图片,一个用于显示文本信息,通过事件处理代码来相应改变两个控件的布局。
- private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
- {
- // 如果是横向的
- 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);
- }
- // 如果是纵向
- else if (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运行程序,默认的屏幕方向是纵向的,如下图所示:
好,现在,我们把屏幕旋转一下,看看会怎么样。
二、StackPanel控件的处理。
- <phone:PhoneApplicationPage
- x:Class="Sample_PageDir.Page2"
- 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"
- OrientationChanged="PhoneApplicationPage_OrientationChanged"
- Orientation="Portrait"
- mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
- shell:SystemTray.IsVisible="True">
- <phone:PhoneApplicationPage.Resources>
- <Style TargetType="TextBlock">
- <Setter Property="FontSize" Value="46"/>
- </Style>
- </phone:PhoneApplicationPage.Resources>
- <StackPanel x:Name="pl">
- <TextBlock Text="文本一"/>
- <TextBlock Text="文本二"/>
- <TextBlock Text="文本三"/>
- </StackPanel>
- </phone:PhoneApplicationPage>
后台事件处理代码。
- private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
- {
- if (e.Orientation == PageOrientation.Landscape ||
- e.Orientation == PageOrientation.LandscapeLeft ||
- e.Orientation == PageOrientation.LandscapeRight)
- {
- this.pl.Orientation = System.Windows.Controls.Orientation.Horizontal;
- }
- else
- {
- this.pl.Orientation = System.Windows.Controls.Orientation.Vertical;
- }
- }
运行,默认方向是纵向。
把屏幕旋转后。
三、Canvas控件的处理。
- <phone:PhoneApplicationPage
- x:Class="Sample_PageDir.Page3"
- 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"
- OrientationChanged="PhoneApplicationPage_OrientationChanged"
- mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
- shell:SystemTray.IsVisible="True">
- <Canvas x:Name="cv">
- <Rectangle x:Name="rect1"
- Width="232"
- Height="238"
- Fill="Red"
- Canvas.Left="88"
- Canvas.Top="88"/>
- <Rectangle x:Name="rect2"
- Height="192"
- Width="275"
- Fill="Yellow"
- Canvas.Top="268"
- Canvas.Left="155"/>
- </Canvas>
- </phone:PhoneApplicationPage>
后台代码。后台代码。
- private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
- {
- if (e.Orientation== PageOrientation.Landscape||e.Orientation== PageOrientation.LandscapeLeft||e.Orientation== PageOrientation.LandscapeRight)
- {
- Canvas.SetTop(this.rect1, 37);
- Canvas.SetLeft(this.rect1, 46);
- Canvas.SetTop(this.rect2, 240);
- Canvas.SetLeft(this.rect2, 462);
- }
- else
- {
- Canvas.SetTop(this.rect1, 88);
- Canvas.SetLeft(this.rect1, 88);
- Canvas.SetTop(this.rect2, 268);
- Canvas.SetLeft(this.rect2, 155);
- }
- }
看看效果。看看效果。
纵向。
横向。
转载于:https://www.cnblogs.com/songtzu/archive/2012/07/24/2607176.html
Windows Phone开发(6):处理屏幕方向的改变 转:http://blog.csdn.net/tcjiaan/article/details/7273107...相关推荐
- Windows Phone开发(30):图形 转:http://blog.csdn.net/tcjiaan/article/details/7453028
图形如矩形.椭圆.路径等都从Shape类派生,它们一般表示规则或不规则图形,这些图形都是简单的二维图形,我相信大家都能理解的. 例一:矩形. 请看下面的XAML代码. [html] view plai ...
- Windows Phone开发(28):隔离存储B 转:http://blog.csdn.net/tcjiaan/article/details/7436959...
上一节我们聊了目录的操作,这一节我们继续来看看如何读写文件. 首先说一下题外话,许多朋友都在摇摆不定,三心二意,其实这样的学习态度是很不好的,如果你对Windows phone开发有兴趣,如果你真想学 ...
- Windows Phone开发(39):漫谈关键帧动画上篇 转:http://blog.csdn.net/tcjiaan/article/details/7550506...
尽管前面介绍的几种动画会让觉得很好玩了,但是,不知道你是否发现,在前面说到的一系列XXXAnimation中,都有一个共同点,那就是仅仅针对两个值的目标值之间产生动画,如果使用By,将在原值和加上By ...
- Windows Phone开发(7):当好总舵主 转:http://blog.csdn.net/tcjiaan/article/details/7281421...
吹完了页面有关的话题,今天我们来聊一下页面之间是如何导航的,在更多情况下,我们的应用程序不会只有一个页面的,应该会有N个,就像我们做桌面应 用开发那样,我们一个应用程序中可能不止一个窗体(极简单的程序 ...
- Windows Phone开发(13):如何规范用户的输入行为 转:http://blog.csdn.net/tcjiaan/article/details/7341513...
很多时候,我们对用户的操作或输入做一定程度的限制,以避免发生不必要的异常或错误,因此,对一些特殊的类型,进行输入限制是很有必要的. 通改变屏幕键盘的显示模式可以规范和告诉用户, 这里应该输入什么. 要 ...
- Windows Phone开发(46):与Socket有个约会 转:http://blog.csdn.net/tcjiaan/article/details/7669315...
不知道大家有没有"谈Socket色变"的经历?就像我一位朋友所说的,Socket这家伙啊,不得已而用之.哈,Socket真的那么恐怖吗? 其实这话一点也不假,Socket有时候真的 ...
- Windows Phone开发(16):样式和控件模板 转:http://blog.csdn.net/tcjiaan/article/details/7367260...
在前面资源一文中也提过样式,样式就如同我们做HTML页排版时常用到的CSS样式表,它是对于特定娄型的可视化元素,应该可以直接说是针对控件的一种可重用的属性设置列表,这样对于需要设置相同属性值的同类型的 ...
- Windows Phone开发(27):隔离存储A 转:http://blog.csdn.net/tcjiaan/article/details/7425212...
在很多资料或书籍上都翻译为"独立存储",不过,我想了一下,决定将IsolatedStorage翻译为"隔离存储",我想这样会更方便大家对这一概念的理解. 关于何 ...
- Windows Phone开发(32):路径之PathGeometry 转:http://blog.csdn.net/tcjiaan/article/details/7469512...
说起路径这玩意儿,其实说的就是Path类,它藏在命名空间System.Windows.Shapes下,应该好找,它有一个很重要的属性Data,你不妨在"对象浏览器"中把它抓出来看看 ...
- Windows Phone开发(29):隔离存储C 转:http://blog.csdn.net/tcjiaan/article/details/7447469...
本文是隔离存储的第三节,大家先喝杯咖啡放松,今天的内容也是非常简单,我们就聊一件东东--用户设置. 当然了,可能翻译为应用程序设置合适一些,不过没关系,只要大家明白,它就是用于保存我们的应用程序的设置 ...
最新文章
- AlphaCode能替代人类程序员吗?网友:被替代也挺好,这样就可以少写代码多开会了...
- Maven pom.xml 全配置(二)不常用配置
- JS-for的衍生对象
- day21 面向对象之继承和组合
- redhat怎样修改语言_硕士博士个人陈述(PS)辅导及修改服务带你极速前进!
- win10开移动热点让手机使用上网
- 大型网站技术架构(读书笔记)
- 22.分布式系统基础设施
- 重复可记,证明没有忘记这回事
- 软件需求分析课堂讨论一
- XML 教程(一文彻底搞懂XML)
- Windows系统口令扫描之——使用NTScan扫描Windows口令
- MySQL高级查询语句(一)排序、运算符、别名、子查询、内外连接
- 动态博弈--gyy参考总结
- 华为微认证华为云计算服务实践稳过 笔记资料
- 关于android的广告词,关于android:随心译无广告的专属实时翻译神器
- 大一python简答题_Python练习题及参考答案
- 2023-spring 2.探险营地 — 字符串
- Halcon图像预处理-感兴趣区域(ROI)
- 谷歌宣布Android设备累计激活量突破10亿台
热门文章
- 如何阻止事件冒泡和默认事件
- .NET:OrderBy和ThenBy
- 利用whistle调试移动端页面
- [原创] 数据库小工具 (BatchESQL.exe)
- 搭建appium的android环境
- Wince 设备环境和画笔应用
- saltstack安装使用
- 游戏开发--开源软件13--libgdx(Android)||Angle(android 2D...
- mysql主从同步开启后的iptables的设定问题
- Web 设计师的 50 个超便利工具[下]