Loading

Posted lonelyxmas

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Loading相关的知识,希望对你有一定的参考价值。

技术图片

<Grid

    xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:system = "clr-namespace:System;assembly=mscorlib"

    xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid.Resources>
        <!-- Particle Styling -->
        <SolidColorBrush x:Key = "ParticleColor" Color = "#006699"/>
        <SolidColorBrush x:Key = "ParticleBackgroundColor" Color = "Transparent"/>
        <system:Double x:Key = "ParticleOpacity">1</system:Double>
        <system:Double x:Key = "ParticleRadius">5</system:Double>
        
        <system:Double x:Key = "StartingPointX">0</system:Double>
        <system:Double x:Key = "StartingPointY">-20</system:Double>
        
        <system:Double x:Key = "RotationPointX">0.5</system:Double>
        <system:Double x:Key = "RotationPointY">0.5</system:Double>       
        
        <!-- StoryBoard -->
        <system:TimeSpan x:Key = "StoryBoardBeginTimeP0">00:00:00.000</system:TimeSpan>
        <system:TimeSpan x:Key = "StoryBoardBeginTimeP1">00:00:00.100</system:TimeSpan>
        <system:TimeSpan x:Key = "StoryBoardBeginTimeP2">00:00:00.200</system:TimeSpan>
        <system:TimeSpan x:Key = "StoryBoardBeginTimeP3">00:00:00.300</system:TimeSpan>
        <system:TimeSpan x:Key = "StoryBoardBeginTimeP4">00:00:00.400</system:TimeSpan>
        <Duration x:Key = "StoryBoardDuration">00:00:01.800</Duration>
        
        <!-- Particle Origin Angles -->
        <system:Double x:Key = "ParticleOriginAngleP0">0</system:Double>
        <system:Double x:Key = "ParticleOriginAngleP1">-10</system:Double>
        <system:Double x:Key = "ParticleOriginAngleP2">-20</system:Double>
        <system:Double x:Key = "ParticleOriginAngleP3">-30</system:Double>
        <system:Double x:Key = "ParticleOriginAngleP4">-40</system:Double>
        
        <!-- Particle Position & Timing 1 -->
        <system:Double x:Key = "ParticleBeginAngle1">0</system:Double>
        <system:Double x:Key = "ParticleEndAngle1">90</system:Double>
        <system:TimeSpan x:Key = "ParticleBeginTime1">00:00:00.000</system:TimeSpan>
        <Duration x:Key = "ParticleDuration1">00:00:00.750</Duration>
        
        <!-- Particle Position & Timing 2 -->
        <system:Double x:Key = "ParticleBeginAngle2">90</system:Double>
        <system:Double x:Key = "ParticleEndAngle2">270</system:Double>        
        <system:TimeSpan x:Key = "ParticleBeginTime2">00:00:00.751</system:TimeSpan>
        <Duration x:Key = "ParticleDuration2">00:00:00.300</Duration>
        
        <!-- Particle Position & Timing 3 -->
        <system:Double x:Key = "ParticleBeginAngle3">270</system:Double>
        <system:Double x:Key = "ParticleEndAngle3">360</system:Double>        
        <system:TimeSpan x:Key = "ParticleBeginTime3">00:00:01.052</system:TimeSpan>
        <Duration x:Key = "ParticleDuration3">00:00:00.750</Duration>
        
        <Style x:Key = "EllipseStyle" TargetType = "Ellipse">
            <Setter Property = "Width" Value = "{StaticResource ParticleRadius}"/>
            <Setter Property = "Height" Value = "{StaticResource ParticleRadius}"/>
            <Setter Property = "Fill" Value = "{StaticResource ParticleColor}"/>
            <Setter Property = "RenderTransformOrigin" Value = "0.5, 0.5"/>
            <Setter Property = "Opacity" Value = "{StaticResource ParticleOpacity}"/>
        </Style>
    </Grid.Resources>
    <Canvas Width = "50" Height = "50">
        <Canvas.Triggers>
            <EventTrigger RoutedEvent = "Canvas.Loaded">
                <EventTrigger.Actions>
                    <BeginStoryboard>
                        <Storyboard

                            x:Key = "MetroLoadingAnimation"

                            BeginTime = "{StaticResource StoryBoardBeginTimeP0}"

                            Duration = "{StaticResource StoryBoardDuration}"

                            RepeatBehavior = "Forever">
                            <DoubleAnimation

                                Storyboard.TargetName = "p0"

                                Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"

                                From = "{StaticResource ParticleBeginAngle1}"

                                To = "{StaticResource ParticleEndAngle1}"

                                BeginTime = "{StaticResource ParticleBeginTime1}"

                                Duration = "{StaticResource ParticleDuration1}"/>
                            <DoubleAnimation

                                Storyboard.TargetName = "p0"

                                Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"

                                From = "{StaticResource ParticleBeginAngle2}"

                                To = "{StaticResource ParticleEndAngle2}"

                                BeginTime = "{StaticResource ParticleBeginTime2}"

                                Duration = "{StaticResource ParticleDuration2}"/>
                            <DoubleAnimation

                                Storyboard.TargetName = "p0"

                                Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"

                                From = "{StaticResource ParticleBeginAngle3}"

                                To = "{StaticResource ParticleEndAngle3}"

                                BeginTime = "{StaticResource ParticleBeginTime3}"

                                Duration = "{StaticResource ParticleDuration3}"/>
                        </Storyboard>
                    </BeginStoryboard>
                    <BeginStoryboard>
                        <Storyboard

                            x:Key = "MetroLoadingAnimation"

                            BeginTime = "{StaticResource StoryBoardBeginTimeP1}"

                            Duration = "{StaticResource StoryBoardDuration}"

                            RepeatBehavior = "Forever">                             

                            <DoubleAnimation

                                Storyboard.TargetName = "p1"

                                Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"

                                From = "{StaticResource ParticleBeginAngle1}"

                                To = "{StaticResource ParticleEndAngle1}"

                                BeginTime = "{StaticResource ParticleBeginTime1}"

                                Duration = "{StaticResource ParticleDuration1}"/>
                            <DoubleAnimation

                                Storyboard.TargetName = "p1"

                                Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"

                                From = "{StaticResource ParticleBeginAngle2}"

                                To = "{StaticResource ParticleEndAngle2}"

                                BeginTime = "{StaticResource ParticleBeginTime2}"

                                Duration = "{StaticResource ParticleDuration2}"/>
                            <DoubleAnimation

                                Storyboard.TargetName = "p1"

                                Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"

                                From = "{StaticResource ParticleBeginAngle3}"

                                To = "{StaticResource ParticleEndAngle3}"

                                BeginTime = "{StaticResource ParticleBeginTime3}"

                                Duration = "{StaticResource ParticleDuration3}"/>
                        </Storyboard>
                    </BeginStoryboard>
                    <BeginStoryboard>
                        <Storyboard

                            x:Key = "MetroLoadingAnimation"

                            BeginTime = "{StaticResource StoryBoardBeginTimeP2}"

                            Duration = "{StaticResource StoryBoardDuration}"

                            RepeatBehavior = "Forever">                             

                            <DoubleAnimation

                                Storyboard.TargetName = "p2"

                                Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"

                                From = "{StaticResource ParticleBeginAngle1}"

                                To = "{StaticResource ParticleEndAngle1}"

                                BeginTime = "{StaticResource ParticleBeginTime1}"

                                Duration = "{StaticResource ParticleDuration1}"/>
                            <DoubleAnimation

                                Storyboard.TargetName = "p2"

                                Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"

                                From = "{StaticResource ParticleBeginAngle2}"

                                To = "{StaticResource ParticleEndAngle2}"

                                BeginTime = "{StaticResource ParticleBeginTime2}"

                                Duration = "{StaticResource ParticleDuration2}"/>
                            <DoubleAnimation

                                Storyboard.TargetName = "p2"

                                Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"

                                From = "{StaticResource ParticleBeginAngle3}"

                                To = "{StaticResource ParticleEndAngle3}"

                                BeginTime = "{StaticResource ParticleBeginTime3}"

                                Duration = "{StaticResource ParticleDuration3}"/>
                        </Storyboard>
                    </BeginStoryboard>

                    <BeginStoryboard>
                        <Storyboard

                            x:Key = "MetroLoadingAnimation"

                            BeginTime = "{StaticResource StoryBoardBeginTimeP3}"

                            Duration = "{StaticResource StoryBoardDuration}"

                            RepeatBehavior = "Forever">                             

                            <DoubleAnimation

                                Storyboard.TargetName = "p3"

                                Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"

                                From = "{StaticResource ParticleBeginAngle1}"

                                To = "{StaticResource ParticleEndAngle1}"

                                BeginTime = "{StaticResource ParticleBeginTime1}"

                                Duration = "{StaticResource ParticleDuration1}"/>
                            <DoubleAnimation

                                Storyboard.TargetName = "p3"

                                Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"

                                From = "{StaticResource ParticleBeginAngle2}"

                                To = "{StaticResource ParticleEndAngle2}"

                                BeginTime = "{StaticResource ParticleBeginTime2}"

                                Duration = "{StaticResource ParticleDuration2}"/>
                            <DoubleAnimation

                                Storyboard.TargetName = "p3"

                                Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"

                                From = "{StaticResource ParticleBeginAngle3}"

                                To = "{StaticResource ParticleEndAngle3}"

                                BeginTime = "{StaticResource ParticleBeginTime3}"

                                Duration = "{StaticResource ParticleDuration3}"/>
                        </Storyboard>
                    </BeginStoryboard>
                    
                    <BeginStoryboard>
                        <Storyboard

                            x:Key = "MetroLoadingAnimation"

                            BeginTime = "{StaticResource StoryBoardBeginTimeP4}"

                            Duration = "{StaticResource StoryBoardDuration}"

                            RepeatBehavior = "Forever">                             

                            <DoubleAnimation

                                Storyboard.TargetName = "p4"

                                Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"

                                From = "{StaticResource ParticleBeginAngle1}"

                                To = "{StaticResource ParticleEndAngle1}"

                                BeginTime = "{StaticResource ParticleBeginTime1}"

                                Duration = "{StaticResource ParticleDuration1}"/>
                            <DoubleAnimation

                                Storyboard.TargetName = "p4"

                                Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"

                                From = "{StaticResource ParticleBeginAngle2}"

                                To = "{StaticResource ParticleEndAngle2}"

                                BeginTime = "{StaticResource ParticleBeginTime2}"

                                Duration = "{StaticResource ParticleDuration2}"/>
                            <DoubleAnimation

                                Storyboard.TargetName = "p4"

                                Storyboard.TargetProperty = "(UIElement.RenderTransform).(RotateTransform.Angle)"

                                From = "{StaticResource ParticleBeginAngle3}"

                                To = "{StaticResource ParticleEndAngle3}"

                                BeginTime = "{StaticResource ParticleBeginTime3}"

                                Duration = "{StaticResource ParticleDuration3}"/>
                        </Storyboard>
                    </BeginStoryboard>                    
                </EventTrigger.Actions>
            </EventTrigger>
        </Canvas.Triggers>
        <Border

            x:Name = "p0"

            Background = "{StaticResource ParticleBackgroundColor}"

            Opacity = "{StaticResource ParticleOpacity}">
            <Border.RenderTransform>
                <RotateTransform/>
            </Border.RenderTransform>
            <Border.RenderTransformOrigin>
                <Point X = "{StaticResource RotationPointX}" Y = "{StaticResource RotationPointY}"/>
            </Border.RenderTransformOrigin>
            <Ellipse Style = "{StaticResource EllipseStyle}">
                <Ellipse.RenderTransform>
                    <TransformGroup>
                        <TranslateTransform X = "{StaticResource StartingPointX}" Y = "{StaticResource StartingPointY}"/>
                        <RotateTransform Angle = "{StaticResource ParticleOriginAngleP0}"/>
                    </TransformGroup>
                </Ellipse.RenderTransform>
            </Ellipse>
        </Border>
        <Border

            x:Name = "p1"

            Background = "{StaticResource ParticleBackgroundColor}"

            Opacity = "{StaticResource ParticleOpacity}">
            <Border.RenderTransform>
                <RotateTransform/>
            </Border.RenderTransform>
            <Border.RenderTransformOrigin>
                <Point X = "{StaticResource RotationPointX}" Y = "{StaticResource RotationPointY}"/>
            </Border.RenderTransformOrigin>
            <Ellipse Style = "{StaticResource EllipseStyle}">
                <Ellipse.RenderTransform>
                    <TransformGroup>
                        <TranslateTransform X = "{StaticResource StartingPointX}" Y = "{StaticResource StartingPointY}"/>
                        <RotateTransform Angle = "{StaticResource ParticleOriginAngleP1}"/>
                    </TransformGroup>
                </Ellipse.RenderTransform>
            </Ellipse>
        </Border>
        <Border

            x:Name = "p2"

            Background = "{StaticResource ParticleBackgroundColor}"

            Opacity = "{StaticResource ParticleOpacity}">
            <Border.RenderTransform>
                <RotateTransform/>
            </Border.RenderTransform>
            <Border.RenderTransformOrigin>
                <Point X = "{StaticResource RotationPointX}" Y = "{StaticResource RotationPointY}"/>
            </Border.RenderTransformOrigin>
            <Ellipse Style = "{StaticResource EllipseStyle}">
                <Ellipse.RenderTransform>
                    <TransformGroup>
                        <TranslateTransform X = "{StaticResource StartingPointX}" Y = "{StaticResource StartingPointY}"/>
                        <RotateTransform Angle = "{StaticResource ParticleOriginAngleP2}"/>
                    </TransformGroup>
                </Ellipse.RenderTransform>
            </Ellipse>
        </Border>
        <Border

            x:Name = "p3"

            Background = "{StaticResource ParticleBackgroundColor}"

            Opacity = "{StaticResource ParticleOpacity}">
            <Border.RenderTransform>
                <RotateTransform/>
            </Border.RenderTransform>
            <Border.RenderTransformOrigin>
                <Point X = "{StaticResource RotationPointX}" Y = "{StaticResource RotationPointY}"/>
            </Border.RenderTransformOrigin>
            <Ellipse Style = "{StaticResource EllipseStyle}">
                <Ellipse.RenderTransform>
                    <TransformGroup>
                        <TranslateTransform X = "{StaticResource StartingPointX}" Y = "{StaticResource StartingPointY}"/>
                        <RotateTransform Angle = "{StaticResource ParticleOriginAngleP3}"/>
                    </TransformGroup>
                </Ellipse.RenderTransform>
            </Ellipse>
        </Border>
        <Border

            x:Name = "p4"

            Background = "{StaticResource ParticleBackgroundColor}"

            Opacity = "{StaticResource ParticleOpacity}">
            <Border.RenderTransform>
                <RotateTransform/>
            </Border.RenderTransform>
            <Border.RenderTransformOrigin>
                <Point X = "{StaticResource RotationPointX}" Y = "{StaticResource RotationPointY}"/>
            </Border.RenderTransformOrigin>
            <Ellipse Style = "{StaticResource EllipseStyle}">
                <Ellipse.RenderTransform>
                    <TransformGroup>
                        <TranslateTransform X = "{StaticResource StartingPointX}" Y = "{StaticResource StartingPointY}"/>
                        <RotateTransform Angle = "{StaticResource ParticleOriginAngleP4}"/>
                    </TransformGroup>
                </Ellipse.RenderTransform>
            </Ellipse>
        </Border>
    </Canvas>
</Grid>

 

以上是关于Loading的主要内容,如果未能解决你的问题,请参考以下文章

Loading系列:android系统自带的Loading

页面重新加载js无限loading

几个页面loading样式

怎么让页面loading效果显示

html5中制作loading图标和图片预览代码详解

winform耗时代码处理,仿win10加载动画Loading