SwipeBackThemeAnimation
SwipeBackThemeAnimation
SwipeBackThemeAnimation
SwipeBackThemeAnimation
Class
Definition
Represents the preconfigured animation that applies to controls when an element slides back into its layout slot after a Swipe interaction.
public : sealed class SwipeBackThemeAnimation : Timeline, ISwipeBackThemeAnimationpublic sealed class SwipeBackThemeAnimation : Timeline, ISwipeBackThemeAnimationPublic NotInheritable Class SwipeBackThemeAnimation Inherits Timeline Implements ISwipeBackThemeAnimation// This API is not available in Javascript.
<SwipeBackThemeAnimation ... />
- Inheritance
-
SwipeBackThemeAnimationSwipeBackThemeAnimationSwipeBackThemeAnimationSwipeBackThemeAnimation
- Attributes
| Device family |
Windows 10 (introduced v10.0.10240.0)
|
| API contract |
Windows.Foundation.UniversalApiContract (introduced v1)
|
Inherited Members
Inherited properties
Inherited methods
Inherited events
Examples
The following example applies a SineEase easing function to a DoubleAnimation to create a decelerating animation.
<!-- Example template of a custom control that supports swipe selection.
A SwipeBackThemeAnimation is run when the control goes to the Normal state. -->
<ControlTemplate TargetType="local:SwipeControl">
<Grid>
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="SwipeStates">
<VisualState x:Name="Normal">
<Storyboard>
<SwipeBackThemeAnimation TargetName="contentRectangle"/>
</Storyboard>
</VisualState>
<VisualState x:Name="Selected">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="SelectedText"
Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0" Value="Visible"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Hinting">
<Storyboard>
<SwipeHintThemeAnimation TargetName="contentRectangle"/>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Rectangle Width="100" Height="100" Fill="{TemplateBinding Background}"/>
<Rectangle x:Name="contentRectangle"
Width="100"
Height="100"
Fill="{TemplateBinding Foreground}"/>
<TextBlock x:Name="SelectedText"
Text="Selected"
Visibility="Collapsed"
Foreground="White"
FontSize="20"
VerticalAlignment="Center"
HorizontalAlignment="Center"/>
</Grid>
</ControlTemplate>
public sealed class SwipeControl : Control
{
GestureRecognizer _gestureRecognizer;
bool _isPointerDown = false;
bool _isSelected = false;
bool _isCrossSliding = false;
public SwipeControl()
{
this.DefaultStyleKey = typeof(SwipeControl);
// Direct gesture recognizer to recognize hold and swipe gestures.
_gestureRecognizer = new GestureRecognizer();
_gestureRecognizer.GestureSettings = GestureSettings.Hold |
GestureSettings.HoldWithMouse |
GestureSettings.CrossSlide;
_gestureRecognizer.Holding += GestureRecognizer_Holding;
_gestureRecognizer.CrossSlideHorizontally = false; // Support vertical swiping.
_gestureRecognizer.CrossSliding += GestureRecognizer_CrossSliding;
}
protected override void OnPointerPressed(PointerRoutedEventArgs e)
{
base.OnPointerPressed(e);
_isPointerDown = CapturePointer(e.Pointer);
// Send input to GestureRecognizer for processing.
_gestureRecognizer.ProcessDownEvent(e.GetCurrentPoint(this));
}
protected override void OnPointerReleased(PointerRoutedEventArgs e)
{
base.OnPointerReleased(e);
// Send input to GestureRecognizer for processing.
_gestureRecognizer.ProcessUpEvent(e.GetCurrentPoint(this));
_isCrossSliding = false;
// Go to Normal state when pointer is released.
if (!_isSelected)
{
VisualStateManager.GoToState(this, "Normal", true);
}
}
protected override void OnPointerMoved(PointerRoutedEventArgs e)
{
base.OnPointerMoved(e);
if (_isPointerDown)
{
// Send input to GestureRecognizer for processing.
_gestureRecognizer.ProcessMoveEvents(e.GetIntermediatePoints(this));
}
}
void GestureRecognizer_Holding(GestureRecognizer sender, HoldingEventArgs args)
{
// Go to Hinting state if control is not already selected.
if (!_isSelected)
{
VisualStateManager.GoToState(this, "Hinting", true);
}
}
void GestureRecognizer_CrossSliding(GestureRecognizer sender, CrossSlidingEventArgs args)
{
// Prevent multiple state changes for the same swipe gesture.
if (!_isCrossSliding)
{
_isCrossSliding = true;
// Toggle between Selected and Normal on swipe gesture.
_isSelected = !_isSelected;
if (_isSelected)
{
VisualStateManager.GoToState(this, "Selected", true);
}
else
{
VisualStateManager.GoToState(this, "Normal", true);
}
}
}
}
// SwipeControl.h:
public ref class SwipeControl sealed : public Windows::UI::Xaml::Controls::Control
{
public:
SwipeControl();
protected:
virtual void OnPointerPressed(Windows::UI::Xaml::Input::PointerRoutedEventArgs^ e) override;
virtual void OnPointerReleased(Windows::UI::Xaml::Input::PointerRoutedEventArgs^ e) override;
virtual void OnPointerMoved(Windows::UI::Xaml::Input:: PointerRoutedEventArgs^ e) override;
private:
Windows::UI::Input::GestureRecognizer^ m_gestureRecognizer;
bool m_isPointerDown;
bool m_isSelected;
bool m_isCrossSliding;
void GestureRecognizer_Holding(Windows::UI::Input::GestureRecognizer^ sender,
Windows::UI::Input::HoldingEventArgs^ args);
void GestureRecognizer_CrossSliding(Windows::UI::Input::GestureRecognizer^ sender,
Windows::UI::Input::CrossSlidingEventArgs^ args);
};
// SwipeControl.cpp:
SwipeControl::SwipeControl() : m_isCrossSliding(false), m_isPointerDown(false), m_isSelected(false)
{
DefaultStyleKey = "DocsCPP.SwipeControl";
m_gestureRecognizer = ref new GestureRecognizer();
m_gestureRecognizer->GestureSettings = GestureSettings::Hold |
GestureSettings::HoldWithMouse |
GestureSettings::CrossSlide;
m_gestureRecognizer->Holding::add(ref new TypedEventHandler<GestureRecognizer^,
HoldingEventArgs^>(this, &SwipeControl::GestureRecognizer_Holding));
m_gestureRecognizer->CrossSlideHorizontally = false; // Support vertical swiping.
m_gestureRecognizer->CrossSliding::add(ref new TypedEventHandler<GestureRecognizer^,
CrossSlidingEventArgs^>(this, &SwipeControl::GestureRecognizer_CrossSliding));
}
void SwipeControl::OnPointerPressed(PointerRoutedEventArgs^ e)
{
m_isPointerDown = CapturePointer(e->Pointer);
// Send input to GestureRecognizer for processing.
m_gestureRecognizer->ProcessDownEvent(e->GetCurrentPoint(this));
}
void SwipeControl::OnPointerReleased(PointerRoutedEventArgs^ e)
{
// Send input to GestureRecognizer for processing.
m_gestureRecognizer->ProcessUpEvent(e->GetCurrentPoint(this));
m_isCrossSliding = false;
// Go to Normal state when pointer is released.
if (!m_isSelected)
{
VisualStateManager::GoToState(this, "Normal", true);
}
}
void SwipeControl::OnPointerMoved(PointerRoutedEventArgs^ e)
{
if (m_isPointerDown)
{
// Send input to GestureRecognizer for processing.
m_gestureRecognizer->ProcessMoveEvents(e->GetIntermediatePoints(this));
}
}
void SwipeControl::GestureRecognizer_Holding(GestureRecognizer^ sender, HoldingEventArgs^ args)
{
// Go to Hinting state if control is not already selected.
if (!m_isSelected)
{
VisualStateManager::GoToState(this, "Hinting", true);
}
}
void SwipeControl::GestureRecognizer_CrossSliding(GestureRecognizer^ sender, CrossSlidingEventArgs^ args)
{
// Prevent multiple state changes for the same swipe gesture.
if (!m_isCrossSliding)
{
m_isCrossSliding = true;
// Toggle between Selected and Normal on swipe gesture.
m_isSelected = !m_isSelected;
if (m_isSelected)
{
VisualStateManager::GoToState(this, "Selected", true);
}
else
{
VisualStateManager::GoToState(this, "Normal", true);
}
}
}
Remarks
Note that setting the Duration property has no effect on this object since the duration is preconfigured.
Constructors
SwipeBackThemeAnimation() SwipeBackThemeAnimation() SwipeBackThemeAnimation() SwipeBackThemeAnimation()
Initializes a new instance of the SwipeBackThemeAnimation class.
public : SwipeBackThemeAnimation()public SwipeBackThemeAnimation()Public Sub New()// This API is not available in Javascript.
- See Also
Properties
FromHorizontalOffset FromHorizontalOffset FromHorizontalOffset FromHorizontalOffset
Gets or sets the distance by which the target is translated in the horizontal direction when the animation is active.
public : double FromHorizontalOffset { get; set; }public double FromHorizontalOffset { get; set; }Public ReadWrite Property FromHorizontalOffset As double// This API is not available in Javascript.
<SwipeBackThemeAnimation FromHorizontalOffset="double" />
- Value
- double double double double
The horizontal offset translation, in pixels.
- See Also
FromHorizontalOffsetProperty FromHorizontalOffsetProperty FromHorizontalOffsetProperty FromHorizontalOffsetProperty
Identifies the FromHorizontalOffset dependency property.
public : static DependencyProperty FromHorizontalOffsetProperty { get; }public static DependencyProperty FromHorizontalOffsetProperty { get; }Public Static ReadOnly Property FromHorizontalOffsetProperty As DependencyProperty// This API is not available in Javascript.
The identifier for the FromHorizontalOffset dependency property.
- See Also
FromVerticalOffset FromVerticalOffset FromVerticalOffset FromVerticalOffset
Gets or sets the distance by which the target is translated in the vertical direction when the animation is active.
public : double FromVerticalOffset { get; set; }public double FromVerticalOffset { get; set; }Public ReadWrite Property FromVerticalOffset As double// This API is not available in Javascript.
<SwipeBackThemeAnimation FromVerticalOffset="double" />
- Value
- double double double double
The vertical offset translation, in pixels.
- See Also
FromVerticalOffsetProperty FromVerticalOffsetProperty FromVerticalOffsetProperty FromVerticalOffsetProperty
Identifies the FromHorizontalOffset dependency property.
public : static DependencyProperty FromVerticalOffsetProperty { get; }public static DependencyProperty FromVerticalOffsetProperty { get; }Public Static ReadOnly Property FromVerticalOffsetProperty As DependencyProperty// This API is not available in Javascript.
The identifier for the FromHorizontalOffset dependency property.
- See Also
TargetName TargetName TargetName TargetName
Gets or sets the reference name of the control element being targeted.
public : PlatForm::String TargetName { get; set; }public string TargetName { get; set; }Public ReadWrite Property TargetName As string// This API is not available in Javascript.
<SwipeBackThemeAnimation TargetName="nameString" />
- Value
- PlatForm::String string string string
The reference name. This is typically the x:Name of the relevant element as declared in XAML.
- See Also
TargetNameProperty TargetNameProperty TargetNameProperty TargetNameProperty
Identifies the TargetName dependency property.
public : static DependencyProperty TargetNameProperty { get; }public static DependencyProperty TargetNameProperty { get; }Public Static ReadOnly Property TargetNameProperty As DependencyProperty// This API is not available in Javascript.
The identifier for the TargetName dependency property.
- See Also