2016-12-07 10 views
1

Кто-нибудь знает, как вращать мягкие экранные кнопки при изменении ориентации на C#, Windows Phone 10?Поворот мягких экранных кнопок на Windows-телефоне UWP

Я хочу, чтобы ориентация дисплея была портретной или альбомной, чтобы избежать анимации при изменении ориентации дисплея. Я могу повернуть все кнопки контента в событии DeviceOrientation.OrientationChanged, но я не знаю, есть ли способ доступа и поворота на экранных кнопках.

Я нашел Severan ответы, которые помечены как ответили как этот: UWP C# Disable Orientation Change Animation , но все они говорят о том, как обнаружить, если ориентация изменяется. Я не могу найти пример того, как вращать мягкие экранные кнопки.

Эффект должен быть похож на встроенную камеру на родном телефоне.

ответ

0

вы можете использовать датчик ориентации, чтобы получить device`s ориентацию, а затем установить ангел вашего Button.Projection

Справочные ссылки: https://msdn.microsoft.com/en-us/windows/uwp/devices-sensors/use-the-orientation-sensor

public sealed partial class MainPage : Page 
{ 
    private SimpleOrientationSensor simpleorientation; 
    private double? Current = 0; 

    public MainPage() 
    { 
     this.InitializeComponent(); 
     simpleorientation = SimpleOrientationSensor.GetDefault(); 
     if (simpleorientation != null) 
     { 
      simpleorientation.OrientationChanged += new TypedEventHandler<SimpleOrientationSensor, SimpleOrientationSensorOrientationChangedEventArgs>(OrientationChanged); 
     } 
    } 

    private async void OrientationChanged(SimpleOrientationSensor sender, SimpleOrientationSensorOrientationChangedEventArgs args) 
    { 
     await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal,() => 
     { 
      SimpleOrientation orientation = args.Orientation; 
      switch (orientation) 
      { 
       case SimpleOrientation.NotRotated: 
        Rotate(0); 
        break; 

       case SimpleOrientation.Rotated90DegreesCounterclockwise: 
        Rotate(90); 
        break; 

       case SimpleOrientation.Rotated180DegreesCounterclockwise: 
        Rotate(180); 
        break; 

       case SimpleOrientation.Rotated270DegreesCounterclockwise: 
        Rotate(270); 
        break; 

       case SimpleOrientation.Faceup: 
        break; 

       case SimpleOrientation.Facedown: 
        break; 

       default: 

        break; 
      } 
     }); 
    } 

    private void Rotate(double value) 
    { 
     MyAnimation.From = Current; 
     MyAnimation.To = (360 - value); 
     myStoryBoard.Begin(); 
     Current = MyAnimation.To; 
    } 
} 

XAML код:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <Button 
     x:Name="TestButton" 
     HorizontalAlignment="Center" 
     VerticalAlignment="Center" 
     Content="button"> 
     <Button.Projection> 
      <PlaneProjection x:Name="Projection" RotationZ="0" /> 
     </Button.Projection> 
    </Button> 
    <Grid.Resources> 
     <Storyboard x:Name="myStoryBoard"> 
      <DoubleAnimation 
       x:Name="MyAnimation" 
       Storyboard.TargetName="Projection" 
       Storyboard.TargetProperty="RotationZ" 
       Duration="0:0:1" /> 
     </Storyboard> 
    </Grid.Resources> 
</Grid> 
+0

Спасибо за ответ. Разве это не просто кнопки, которые я накладываю на экран в сетке? Меня интересует, как вращать аппаратные средства на экранных кнопках. – user2081328