介紹
重新想象 Windows 8 Store Apps 之 動畫
PopInThemeAnimation - 控件出現時的動畫, PopOutThemeAnimation - 控件消失時的動畫
FadeInThemeAnimation - 控件淡入的動畫, FadeOutThemeAnimation - 控件淡出的動畫
PointerDownThemeAnimation - 鼠標(手指)在控件上按下時的動畫, PointerUpThemeAnimation - 鼠標 (手指)在控件上抬起時的動畫
SwipeHintThemeAnimation - 控件的 Swipe 動畫(當你的控件在收到 Swipe 後會做響應時), SwipeBackThemeAnimation - 控件的 Swipe 動畫(當你的控件在收到 Swipe 後不需要做任何響應時)
RepositionThemeAnimation - 控件重新定位時的動畫
SplitOpenThemeAnimation - 打開“拆分”控件的動畫, SplitCloseThemeAnimation - 關閉“拆分”控件 的動畫
DragItemThemeAnimation, DragOverThemeAnimation, DropTargetItemThemeAnimation - 顧名思義的一些 動畫效果,用於集合類的控件
示例
1、演示主題動畫之 PopIn, PopOut
Animation/ThemeAnimation/PopInPopOut.xaml
<Page
x:Class="XamlDemo.Animation.ThemeAnimation.PopInPopOut"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Animation.ThemeAnimation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="Transparent">
<StackPanel Margin="120 0 0 0">
<StackPanel.Resources>
<!--
PopInThemeAnimation - 控件出現時的動畫
FromHorizontalOffset - 控件起始位置的水平偏移量
FromVerticalOffset - 控件起始位置的垂直偏移量
-->
<Storyboard x:Name="storyboardPopIn">
<PopInThemeAnimation Storyboard.TargetName="border" FromHorizontalOffset="1000" FromVerticalOffset="300" />
</Storyboard>
<!--
PopOutThemeAnimation - 控件消失時的動畫
-->
<Storyboard x:Name="storyboardPopOut">
<PopOutThemeAnimation Storyboard.TargetName="border" />
</Storyboard>
</StackPanel.Resources>
<Border Name="border" BorderThickness="5" BorderBrush="Red" Background="Blue" CornerRadius="10" Width="400" Height="100" HorizontalAlignment="Left">
<Border.Child>
<TextBlock Text="我是 Border 裡的內容" FontSize="24.667" TextAlignment="Center" VerticalAlignment="Center" />
</Border.Child>
</Border>
<Button Name="btnPopIn" Content="PopInThemeAnimation Demo" Click="btnPopIn_Click_1" Margin="0 30 0 0" />
<Button Name="btnPopOut" Content="PopOutThemeAnimation Demo" Click="btnPopOut_Click_1" Margin="0 10 0 0" />
</StackPanel>
</Grid>
</Page>
Animation/ThemeAnimation/PopInPopOut.xaml.cs
using
Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace XamlDemo.Animation.ThemeAnimation
{
public sealed partial class PopInPopOut : Page
{
public PopInPopOut()
{
this.InitializeComponent();
}
private void btnPopIn_Click_1(object sender, RoutedEventArgs e)
{
storyboardPopIn.Begin();
}
private void btnPopOut_Click_1(object sender, RoutedEventArgs e)
{
storyboardPopOut.Begin();
}
}
}
2、演示主題動畫之 FadeIn, FadeOut
Animation/ThemeAnimation/FadeInFadeOut.xaml
<Page
x:Class="XamlDemo.Animation.ThemeAnimation.FadeInFadeOut"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Animation.ThemeAnimation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="Transparent">
<StackPanel Margin="120 0 0 0">
<StackPanel.Resources>
<!--
FadeInThemeAnimation - 控件淡入的動畫
-->
<Storyboard x:Name="storyboardFadeIn">
<FadeInThemeAnimation Storyboard.TargetName="border" />
</Storyboard>
<!--
FadeOutThemeAnimation - 控件淡出的動畫
-->
<Storyboard x:Name="storyboardFadeOut">
<FadeOutThemeAnimation Storyboard.TargetName="border" />
</Storyboard>
</StackPanel.Resources>
<Border Name="border" BorderThickness="5" BorderBrush="Red" Background="Blue" CornerRadius="10" Width="400" Height="100" HorizontalAlignment="Left">
<Border.Child>
<TextBlock Text="我是 Border 裡的內容" FontSize="24.667" TextAlignment="Center" VerticalAlignment="Center" />
</Border.Child>
</Border>
<Button Name="btnFadeIn" Content="FadeInThemeAnimation Demo" Click="btnFadeIn_Click_1" Margin="0 10 0 0" />
<Button Name="btnFadeOut" Content="FadeOutThemeAnimation Demo" Click="btnFadeOut_Click_1" Margin="0 10 0 0" />
</StackPanel>
</Grid>
</Page>
Animation/ThemeAnimation/FadeInFadeOut.xaml.cs
using
Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace XamlDemo.Animation.ThemeAnimation
{
public sealed partial class FadeInFadeOut : Page
{
public FadeInFadeOut()
{
this.InitializeComponent();
}
private void btnFadeIn_Click_1(object sender, RoutedEventArgs e)
{
storyboardFadeIn.Begin();
}
private void btnFadeOut_Click_1(object sender, RoutedEventArgs e)
{
storyboardFadeOut.Begin();
}
}
}
3、演示主題動畫之 PointerDown, PointerUp
Animation/ThemeAnimation/PointerDownPointerUp.xaml
<Page
x:Class="XamlDemo.Animation.ThemeAnimation.PointerDownPointerUp"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Animation.ThemeAnimation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="Transparent">
<StackPanel Margin="120 0 0 0">
<StackPanel.Resources>
<!--
PointerDownThemeAnimation - 鼠標(手指)在控件上按下時的動畫
-->
<Storyboard x:Name="storyboardPointerDown">
<PointerDownThemeAnimation Storyboard.TargetName="border" />
</Storyboard>
<!--
PointerUpThemeAnimation - 鼠標(手指)在控件上抬起時的動畫
-->
<Storyboard x:Name="storyboardPointerUp">
<PointerUpThemeAnimation Storyboard.TargetName="border" />
</Storyboard>
</StackPanel.Resources>
<Border Name="border" BorderThickness="5" BorderBrush="Red" Background="Blue" CornerRadius="10" Width="400" Height="100" HorizontalAlignment="Left">
<Border.Child>
<TextBlock Text="我是 Border 裡的內容" FontSize="24.667" TextAlignment="Center" VerticalAlignment="Center" />
</Border.Child>
</Border>
<Button Name="btnPointerDown" Content="PointerDownThemeAnimation Demo" Click="btnPointerDown_Click_1" Margin="0 10 0 0" />
<Button Name="btnPointerUp" Content="PointerUpThemeAnimation Demo" Click="btnPointerUp_Click_1" Margin="0 10 0 0" />
</StackPanel>
</Grid>
</Page>
Animation/ThemeAnimation/PointerDownPointerUp.xaml.cs
using
Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace XamlDemo.Animation.ThemeAnimation
{
public sealed partial class PointerDownPointerUp : Page
{
public PointerDownPointerUp()
{
this.InitializeComponent();
}
private void btnPointerDown_Click_1(object sender, RoutedEventArgs e)
{
storyboardPointerDown.Begin();
}
private void btnPointerUp_Click_1(object sender, RoutedEventArgs e)
{
storyboardPointerUp.Begin();
}
}
}
4、演示主題動畫之 SwipeHint, SwipeBack
Animation/ThemeAnimation/SwipeHintSwipeBack.xaml
<Page
x:Class="XamlDemo.Animation.ThemeAnimation.SwipeHintSwipeBack"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Animation.ThemeAnimation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="Transparent">
<StackPanel Margin="120 0 0 0">
<StackPanel.Resources>
<!--
SwipeHintThemeAnimation - 控件的 Swipe 動畫(當你的控件在收到 Swipe 後會做響應時)
ToHorizontalOffset, ToVerticalOffset - 控件需要到達的偏移量
-->
<Storyboard x:Name="storyboardSwipeHint">
<SwipeHintThemeAnimation Storyboard.TargetName="border" ToHorizontalOffset="100" ToVerticalOffset="100" />
</Storyboard>
<!--
SwipeBackThemeAnimation - 控件的 Swipe 動畫(當你的控件在收到 Swipe 後不需要做任何響應時)
FromHorizontalOffset, FromVerticalOffset - 控件從此偏移量返回原位
-->
<Storyboard x:Name="storyboardSwipeBack">
<SwipeBackThemeAnimation Storyboard.TargetName="border" FromHorizontalOffset="100" FromVerticalOffset="100" />
</Storyboard>
</StackPanel.Resources>
<Border Name="border" BorderThickness="5" BorderBrush="Red" Background="Blue" CornerRadius="10" Width="400" Height="100" HorizontalAlignment="Left">
<Border.Child>
<TextBlock Text="我是 Border 裡的內容" FontSize="24.667" TextAlignment="Center" VerticalAlignment="Center" />
</Border.Child>
</Border>
<Button Name="btnSwipeHint" Content="SwipeHintThemeAnimation Demo" Click="btnSwipeHint_Click_1" Margin="0 10 0 0" />
<Button Name="btnSwipeBack" Content="SwipeBackThemeAnimation Demo" Click="btnSwipeBack_Click_1" Margin="0 10 0 0" />
</StackPanel>
</Grid>
</Page>
Animation/ThemeAnimation/SwipeHintSwipeBack.xaml.cs
using
Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace XamlDemo.Animation.ThemeAnimation
{
public sealed partial class SwipeHintSwipeBack : Page
{
public SwipeHintSwipeBack()
{
this.InitializeComponent();
}
private void btnSwipeHint_Click_1(object sender, RoutedEventArgs e)
{
storyboardSwipeHint.Begin();
}
private void btnSwipeBack_Click_1(object sender, RoutedEventArgs e)
{
storyboardSwipeBack.Begin();
}
}
}
5、演示主題動畫之 Reposition
Animation/ThemeAnimation/Reposition.xaml
<Page
x:Class="XamlDemo.Animation.ThemeAnimation.Reposition"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Animation.ThemeAnimation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="Transparent">
<StackPanel Margin="120 0 0 0">
<StackPanel.Resources>
<!--
RepositionThemeAnimation - 控件重新定位時的動畫
FromHorizontalOffset, FromVerticalOffset - 控件從此偏移量的位置重新定位到新的位置
-->
<Storyboard x:Name="storyboardReposition">
<RepositionThemeAnimation Storyboard.TargetName="border" FromHorizontalOffset="1000" FromVerticalOffset="300" />
</Storyboard>
</StackPanel.Resources>
<Border Name="border" BorderThickness="5" BorderBrush="Red" Background="Blue" CornerRadius="10" Width="400" Height="100" HorizontalAlignment="Left">
<Border.Child>
<TextBlock Text="我是 Border 裡的內容" FontSize="24.667" TextAlignment="Center" VerticalAlignment="Center" />
</Border.Child>
</Border>
<Button Name="btnReposition" Content="RepositionThemeAnimation Demo" Click="btnReposition_Click_1" Margin="0 10 0 0" />
</StackPanel>
</Grid>
</Page>
Animation/ThemeAnimation/Reposition.xaml.cs
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace XamlDemo.Animation.ThemeAnimation
{
public sealed partial class Reposition : Page
{
public Reposition()
{
this.InitializeComponent();
}
private void btnReposition_Click_1(object sender, RoutedEventArgs e)
{
storyboardReposition.Begin();
}
}
}
6、演示主題動畫之 SplitOpen, SplitClose
Animation/ThemeAnimation/SplitOpenSplitClose.xaml
<Page
x:Class="XamlDemo.Animation.ThemeAnimation.SplitOpenSplitClose"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Animation.ThemeAnimation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="Transparent">
<StackPanel Margin="120 0 0 0">
<StackPanel.Resources>
<!--
SplitOpenThemeAnimation - 打開“拆分”控件的動畫
打開 OpenedTargetName(OpenedTargetName 的內容是 ContentTargetName),關閉 ClosedTargetName
具體的用法參見 ComboBox 的 ControlTemplate
-->
<Storyboard x:Name="storyboardSplitOpen">
<SplitOpenThemeAnimation
OpenedTargetName="border"
ContentTargetName="textBlock"
ClosedTargetName="rectangle"
ContentTranslationDirection="Left"
ContentTranslationOffset="200"
OffsetFromCenter="0"
OpenedLength="1"
ClosedLength="0" />
</Storyboard>
<!--
SplitCloseThemeAnimation - 關閉“拆分”控件的動畫
關閉 OpenedTargetName(OpenedTargetName 的內容是 ContentTargetName),打開 ClosedTargetName
具體的用法參見 ComboBox 的 ControlTemplate
-->
<Storyboard x:Name="storyboardSplitClose">
<SplitCloseThemeAnimation
OpenedTargetName="border"
ContentTargetName="textBlock"
ClosedTargetName="rectangle"
ContentTranslationDirection="Left"
ContentTranslationOffset="200"
OffsetFromCenter="0"
OpenedLength="1"
ClosedLength="0" />
</Storyboard>
</StackPanel.Resources>
<Rectangle Name="rectangle" Width="400" Height="100" Fill="Orange" HorizontalAlignment="Left" />
<Border Name="border" BorderThickness="5" BorderBrush="Red" Background="Blue" CornerRadius="10" Width="400" Height="100" HorizontalAlignment="Left" />
<Button Name="btnSplitOpen" Content="SplitOpenThemeAnimation Demo" Click="btnSplitOpen_Click_1" Margin="0 10 0 0" />
<Button Name="btnSplitClose" Content="SplitCloseThemeAnimation Demo" Click="btnSplitClose_Click_1" Margin="0 10 0 0" />
</StackPanel>
</Grid>
</Page>
Animation/ThemeAnimation/SplitOpenSplitClose.xaml.cs
using
Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace XamlDemo.Animation.ThemeAnimation
{
public sealed partial class SplitOpenSplitClose : Page
{
public SplitOpenSplitClose()
{
this.InitializeComponent();
}
private void btnSplitOpen_Click_1(object sender, RoutedEventArgs e)
{
TextBlock textBlock = new TextBlock();
textBlock.Name = "textBlock";
textBlock.Text = "我是 Border 裡的內容";
textBlock.FontSize = 24.667;
textBlock.TextAlignment = TextAlignment.Center;
textBlock.VerticalAlignment = VerticalAlignment.Center;
border.Child = textBlock;
storyboardSplitOpen.Begin();
}
private void btnSplitClose_Click_1(object sender, RoutedEventArgs e)
{
storyboardSplitClose.Begin();
}
}
}
7、演示主題動畫之 DragItem, DragOver, DropTargetItem
Animation/ThemeAnimation/DragItemDragOverDropTargetItem.xaml
<Page
x:Class="XamlDemo.Animation.ThemeAnimation.DragItemDragOverDropTargetItem"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XamlDemo.Animation.ThemeAnimation"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="Transparent">
<StackPanel Margin="120 0 0 0">
<TextBlock FontSize="14.667" LineHeight="22">
<Run>顧名思義的 DragItemThemeAnimation, DragOverThemeAnimation, DropTargetItemThemeAnimation</Run>
<LineBreak />
<Run>具體的用法參見 GridViewItem 或 ListViewItem 的 ControlTemplate</Run>
</TextBlock>
</StackPanel>
</Grid>
</Page>
OK
[源碼下載]:http://files.cnblogs.com/webabcd/Windows8.rar