Опубликован: 14.08.2012 | Доступ: свободный | Студентов: 880 / 20 | Оценка: 5.00 / 5.00 | Длительность: 09:59:00
Специальности: Программист
Самостоятельная работа 22:

Навигация, ориентация экрана

29.3. Управление ориентацией экрана

Мы хотели бы, чтобы страницы нашего приложения обладали бы следующими особенностями. Главная страница должна отображаться в портретной ориентации, игровая – в ландшафтной, а страница информации о программе должна менять ориентацию при повороте экрана.

Добавим на страницу надпись (элемент управления TextBlock) с текстом "Это информация о нашей программе", теперь перейдем в XAML-код страницы и найдем там строку SupportedOrientations="Portrait" Orientation="Portrait". Эта строка указывает на то, что страница поддерживает портретную ориентацию, и отображается так же в этой ориентации. Фактически, данная строка задаёт соответствующее свойство для PhoneApplicationPage. Свойство SupportedOrientation (PhoneApplicationPage.SupportedOrientation) может принимать следующие значения:

  • Portrait – потретная
  • Landscape – ландшафтная
  • PortraitOrLandscape – портретная и ландшафтная ориентация.

Свойство Orientation (это – свойство PhoneApplicationPage.Orinentation) можно установить в следующие значения:

  • Landscape – ландшафтный режим по умолчанию
  • LandscapeLeft – ландшафтный режим, телефон расположен горизонтально, на левом боку
  • LandscapeRight – ландшафтный режим, телефон расположен горизонтально, на правом боку
  • Portrait – портретный режим по умолчанию
  • PortraitUp – стандартный портретный режим (кнопки в нижней части)
  • PortraitDown – перевернутый портретный режим (кнопки в верхней части)
  • None – ориентация не задана

Мы установим свойство SupportedOrientation в значение PortraitOrLandscape, в итоге, код страницы, где это свойство настраивается, приобретет вид, показанный в листинге 29.6.

<phone:PhoneApplicationPage 
    x:Class="P22_1.About"
    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">
Листинг 29.6. Результат редактирования кода страницы About.xaml

Если сейчас мы запустим данный пример на телефоне или на эмуляторе, перейдем на страницу About.xaml и попытаемся поворачивать телефон, при любом его положении (а именно, речь идёт о стандартных положениях - LandscapeLeft, LandscapeRight, PortraitUp) страничка будет автоматически разворачиваться правильным образом. Этот механизм работает без дополнительных усилий с нашей стороны, однако, вполне возможно, что в вашем приложении нужно будет вносить какие-либо изменения в отображаемые на странице элементы при смене ориентации, выполнить какие-то другие действия. Для того, чтобы перехватить и обработать событие смены ориентации экрана, нам понадобится обработчик события OrientationChanged для объекта PhoneApplicationPage. Зададим обработчик этого события (в XAML-коде появится строка OrientationChanged="PhoneApplicationPage_OrientationChanged"), приведем его текст в About.xaml.cs к состоянию, показанному в листинге 29.7.

private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
        {
            textBlock1.Text = "Ориентация экрана: " + this.Orientation.ToString();
        }
Листинг 29.7. Результат редактирования кода страницы About.xaml

В результате, после открытия страницы мы видим в текстовом блоке тот текст, который задан на этапе разработки, а при поворотах экрана в поле выводятся сведения о текущей ориентации, рис. 29.8.

Реакция программы на смену ориентации экрана

Рис. 29.8. Реакция программы на смену ориентации экрана

Кроме того, можно управлять поворотом, например, основываясь на данных от сенсоров устройства, от гироскопа и акселерометра.

29.4. Выводы

В данной лабораторной работе мы научились организовывать навигацию по страницам с помощью элементов управления Button и HyperlinkButton, освоили работу с кнопкой Назад и управление ориентацией страниц.

29.5. Задание

Выясните, ограничивается ли возможность организации навигации по страницам Silverlight-приложений использованием элементов управления, рассмотренных в данной лабораторной работе.

Гулич Анна
Гулич Анна
Невозможно пройти тесты, в окне с вопросами пусто