【问题标题】:Handling screen orientation properly in WIndows Phone 8.1在 Windows Phone 8.1 中正确处理屏幕方向
【发布时间】:2015-03-14 22:55:38
【问题描述】:

我已经完成了我的应用程序并且一切正常,但是我刚刚意识到我的应用程序在屏幕旋转时不能正常运行,这意味着它可能会缩放到不同的屏幕分辨率。我在设计时使用了一个空白页面模板,但我找不到任何不涉及 Windows Phone 8 的文档。我必须做些什么来确保我的应用程序在旋转和不同屏幕尺寸期间正确缩放和运行?我发布的最后一个应用是针对 Windows Phone 7 的

<Page
x:Class="SynagramsWindows8App.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:SynagramsWindows8App"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">

<Grid ScrollViewer.HorizontalScrollBarVisibility="Auto">
    <Grid.Background>
        <ImageBrush ImageSource="Assets/cute-clouds-seamless-pattern.png" Stretch="UniformToFill"/>
    </Grid.Background>
    <TextBlock x:Name="lblMain" Margin="2,28,0,0" TextWrapping="Wrap" Text="SYNAGRAMS!" VerticalAlignment="Top" HorizontalAlignment="Stretch" FontFamily="Buxton Sketch" FontSize="72" TextAlignment="Center" Foreground="#FF085EF5"/>
    <Button x:Name="btnGameMode" Content="Game Modes" HorizontalAlignment="Stretch" Margin="70,168,70,0" VerticalAlignment="Top" Background="Transparent" BorderThickness="1" BorderBrush="#FF0E0474" FontFamily="Buxton Sketch" FontSize="48" Click="btnGameMode_Click" Foreground="#FF071570" RenderTransformOrigin="0.5,0.5"/>
    <Button x:Name="btnInstructions" Content="Instructions" HorizontalAlignment="Stretch" Margin="70,329,70,0" VerticalAlignment="Top" BorderBrush="#FF0E0474" BorderThickness="1" FontFamily="Buxton Sketch" FontSize="48" Click="btnInstructions_Click" Foreground="#FF071570" RenderTransformOrigin="0.5,0.5">

    </Button>
    <Button x:Name="btnTopScore" Content="Achievements" HorizontalAlignment="Stretch" Margin="70,470,70,50" VerticalAlignment="Top" BorderBrush="#FF0E0474" BorderThickness="1" FontFamily="Buxton Sketch" FontSize="48" Foreground="#FF071570" RenderTransformOrigin="0.5,0.5" Click="btnTopScore_Click">

    </Button>

</Grid>

这是纵向和横向图片的链接(稍后将修复字体大小)。我可以将屏幕锁定为纵向。

App main screen pics

【问题讨论】:

  • 您应该添加一些附加信息:您的目标是 RunTime 还是 Silverlight?您所说的“行为不当”是什么意思?您的期望是什么,一些代码,可能 xaml 在这里会很好。它也是通用应用程序吗? - 如果没有,你可以删除 windows-8.1 标签。
  • 我的目标是 RunTime,经过几次测试后,应用程序可以在不同尺寸和分辨率的屏幕之间正确缩放,但是当我将方向更改为横向时,屏幕上有 2 个按钮。
  • 如果没有 xaml 代码,就很难说出问题所在。
  • 用 XAML 和图片链接更新了我的帖子(无法在此处发布图片)

标签: c# xaml windows-phone-8 windows-phone-8.1 windows-8.1


【解决方案1】:

你已经硬编码了 Margins,当你想让你的应用支持不同的方向/分辨率时,这并不是什么好事。

考虑在网格中使用行/列,以及高度/宽度的 单位,然后它将自动缩放:

(我不知道你希望你的布局是什么样子,所以我放了 Height 的示例值)

<Grid>
   <Grid.Background>
      <ImageBrush ImageSource="Assets/cute-clouds-seamless-pattern.png" Stretch="UniformToFill"/>
   </Grid.Background>
   <Grid.RowDefinitions>
       <RowDefinition Height="2*"/>
       <RowDefinition Height="1*"/>
       <RowDefinition Height="1*"/>
   </Grid.RowDefinitions>

   <TextBlock Grid.Row="0" x:Name="lblMain" Margin="2" TextWrapping="Wrap" Text="SYNAGRAMS!" VerticalAlignment="Top" HorizontalAlignment="Stretch" FontFamily="Buxton Sketch" FontSize="72" TextAlignment="Center" Foreground="#FF085EF5"/>
   <Button Grid.Row="1" x:Name="btnGameMode" Content="Game Modes" HorizontalAlignment="Stretch" VerticalAlignment="Top" Background="Transparent" BorderThickness="1" BorderBrush="#FF0E0474" FontFamily="Buxton Sketch" FontSize="48" Click="btnGameMode_Click" Foreground="#FF071570" RenderTransformOrigin="0.5,0.5"/>
   <Button Grid.Row="2" x:Name="btnInstructions" Content="Instructions" HorizontalAlignment="Stretch" VerticalAlignment="Top" BorderBrush="#FF0E0474" BorderThickness="1" FontFamily="Buxton Sketch" FontSize="48" Click="btnInstructions_Click" Foreground="#FF071570" RenderTransformOrigin="0.5,0.5"/>    
   <!-- and so on -->
</Grid>

如果您使用星形作为高度/宽度的行/列,那么空间将根据屏幕计算。请看一些教程和MSDN: onetwothreefour 可能还有更多。

【讨论】:

  • 谢谢,这是一个爱好项目,所以对我来说很新。这很好,我将不得不研究网格设计指南
【解决方案2】:

您可以通过转到 Package.appxmanifest 并在“支持的旋转:”下检查您的应用使用的方向来选择您的应用支持的方向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多