程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Windows 8 Store Apps學習(20) 動畫: ThemeAnimation(主題動畫)

Windows 8 Store Apps學習(20) 動畫: ThemeAnimation(主題動畫)

編輯:關於.NET

介紹

重新想象 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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved