Windows Phone 8 按钮文本动画 - C# / XAML

Posted

技术标签:

【中文标题】Windows Phone 8 按钮文本动画 - C# / XAML【英文标题】:Windows Phone 8 Button text animation - C# / XAML 【发布时间】:2013-11-25 13:28:31 【问题描述】:

我正在尝试为 Button 对象内的文本设置动画,使其看起来像 this android boot text。

有谁知道如何或者是否可以在 Windows Phone 上做到这一点?

感谢您的宝贵时间。

【问题讨论】:

你试过什么?你有混合吗?这个问题是针对堆栈溢出的一般问题。请在此处发布之前更多地定义您的问题。谢谢 在这里同意 AMR。但是,如果您有 Blend 或一些动画知识,您可以创建一个 OpacityMask 并为按钮边框的 RenderTransform 的 TranslateTransform 设置动画。不过,您必须创建自己的按钮模板。 【参考方案1】:

我认为这正是您正在寻找的解决方案,我可能错了,但根据我的研究和经验,这是我为您制定的。

首先编辑一个按钮控件,因为我创建了故事板并对内容进行动画处理,然后我使用控制故事板动作行为在加载触发器上调用该故事板。

这是我编辑的 Button 的 XAML,包括我创建的故事板。

<Style x:Key="animatedText" TargetType="Button">
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="BorderBrush" Value="StaticResource PhoneForegroundBrush"/>
        <Setter Property="Foreground" Value="StaticResource PhoneForegroundBrush"/>
        <Setter Property="BorderThickness" Value="StaticResource PhoneBorderThickness"/>
        <Setter Property="FontFamily" Value="StaticResource PhoneFontFamilySemiBold"/>
        <Setter Property="FontSize" Value="StaticResource PhoneFontSizeMedium"/>
        <Setter Property="Padding" Value="10,5,10,6"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Grid Background="Transparent">
                        <Grid.Resources>
                            <Storyboard x:Name="Storyboard1" RepeatBehavior="Forever">
                                <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="ContentContainer">
                                    <EasingDoubleKeyFrame KeyTime="0" Value="0"/>
                                    <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1"/>
                                    <EasingDoubleKeyFrame KeyTime="0:0:0.7" Value="0"/>
                                    <EasingDoubleKeyFrame KeyTime="0:0:1" Value="1"/>
                                </DoubleAnimationUsingKeyFrames>
                            </Storyboard>
                        </Grid.Resources>
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="Normal"/>
                                <VisualState x:Name="MouseOver"/>
                                <VisualState x:Name="Pressed">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentContainer">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="StaticResource PhoneButtonBasePressedForegroundBrush"/>
                                        </ObjectAnimationUsingKeyFrames>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="ButtonBackground">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="StaticResource PhoneAccentBrush"/>
                                        </ObjectAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="Disabled">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentContainer">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="StaticResource PhoneDisabledBrush"/>
                                        </ObjectAnimationUsingKeyFrames>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="ButtonBackground">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="StaticResource PhoneDisabledBrush"/>
                                        </ObjectAnimationUsingKeyFrames>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="ButtonBackground">
                                            <DiscreteObjectKeyFrame KeyTime="0" Value="Transparent"/>
                                        </ObjectAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <i:Interaction.Triggers>
                            <i:EventTrigger>
                                <eim:ControlStoryboardAction Storyboard="StaticResource Storyboard1"/>
                            </i:EventTrigger>
                        </i:Interaction.Triggers>
                        <Border x:Name="ButtonBackground" BorderBrush="TemplateBinding BorderBrush" BorderThickness="TemplateBinding BorderThickness" Background="TemplateBinding Background" CornerRadius="0" Margin="StaticResource PhoneTouchTargetOverhang">
                            <ContentControl x:Name="ContentContainer" ContentTemplate="TemplateBinding ContentTemplate" Content="TemplateBinding Content" Foreground="TemplateBinding Foreground" HorizontalContentAlignment="TemplateBinding HorizontalContentAlignment" Padding="TemplateBinding Padding" VerticalContentAlignment="TemplateBinding VerticalContentAlignment"/>
                        </Border>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

希望这是您的解决方案。

编码愉快!

【讨论】:

以上是关于Windows Phone 8 按钮文本动画 - C# / XAML的主要内容,如果未能解决你的问题,请参考以下文章

Windows Phone 8 文本选择选项

如何填充文本框-Windows Phone 8.1

windows phone 8 共享图像以及预填充的文本

Windows Phone 8.1 中的画布移动动画

windows phone 8.1 电子书阅读器中的翻页动画

语音识别到文本 Windows Phone 8