原文:uwp - 控件精确移动动画

先看效果图:

一共有8个GRID,黄色的负责移动,其他7个负责定位。新建一个页面page,替换默认代码:

 <UserControl.Resources>
<!--#region 动画-->
<Storyboard x:Name="Storyboard">
<!--整体缩小动画-->
<DoubleAnimation x:Name="dh" From="" To="" Duration="00:00:0.2"
Storyboard.TargetName="y"
Storyboard.TargetProperty="X">
<DoubleAnimation.EasingFunction>
<PowerEase EasingMode="EaseInOut" />
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
</Storyboard>
<!--#endregion-->
</UserControl.Resources>
<Grid>
<FlipView>
<FlipViewItem Width="">
<Grid>
<Grid Canvas.ZIndex="" Opacity="0.8" x:Name="w" Background="Yellow" Width="{Binding ElementName=aa,Path=ActualWidth}" HorizontalAlignment="Left">
<Grid.RenderTransform>
<TranslateTransform x:Name="y"></TranslateTransform>
</Grid.RenderTransform>
</Grid> <Grid>
<Grid.ColumnDefinitions> <ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid x:Name="aa" Grid.Column="" Background="Black" Tapped="aa_Tapped">
<Grid.RenderTransform>
<TranslateTransform x:Name="b"></TranslateTransform>
</Grid.RenderTransform>
</Grid>
<Grid x:Name="bb" Grid.Column="" Background="White" Tapped="bb_Tapped">
<Grid.RenderTransform>
<TranslateTransform x:Name="bbb"></TranslateTransform>
</Grid.RenderTransform>
</Grid>
<Grid x:Name="cc" Grid.Column="" Background="Green" Tapped="cc_Tapped">
<Grid.RenderTransform>
<TranslateTransform x:Name="ccc"></TranslateTransform>
</Grid.RenderTransform>
</Grid>
<Grid x:Name="dd" Grid.Column="" Background="Azure" Tapped="dd_Tapped">
<Grid.RenderTransform>
<TranslateTransform x:Name="ddd"></TranslateTransform>
</Grid.RenderTransform>
</Grid>
<Grid x:Name="ee" Grid.Column="" Background="Red" Tapped="ee_Tapped">
<Grid.RenderTransform>
<TranslateTransform x:Name="eee"></TranslateTransform>
</Grid.RenderTransform>
</Grid>
<Grid x:Name="ff" Grid.Column="" Background="Blue" Tapped="ff_Tapped">
<Grid.RenderTransform>
<TranslateTransform x:Name="fff"></TranslateTransform>
</Grid.RenderTransform>
</Grid>
<Grid x:Name="gg" Grid.Column="" Background="DarkRed" Tapped="gg_Tapped">
<Grid.RenderTransform>
<TranslateTransform x:Name="ggg"></TranslateTransform>
</Grid.RenderTransform>
</Grid>
</Grid> </Grid>
</FlipViewItem>
</FlipView>
</Grid>

我这是用用户控件做的,所以把UserControl.Resources改成Page.Resources就行了。

后台代码:

  public void to(int i)
{ dh.From = getX(w); double to = ;
switch (i)
{
case :
to = getX(aa);
break;
case :
to = getX(bb);
break;
case :
to = getX(cc);
break;
case :
to = getX(dd);
break;
case :
to = getX(ee);
break;
case :
to = getX(ff);
break;
case :
to = getX(gg);
break; } dh.To = to;
}
public double getX(Grid g)
{ GeneralTransform gf = g.TransformToVisual(this); Point p = gf.TransformPoint(new Point(, )); return p.X; } private void gg_Tapped(object sender, TappedRoutedEventArgs e)
{
to();
Storyboard.Begin();
} private void ff_Tapped(object sender, TappedRoutedEventArgs e)
{
to();
Storyboard.Begin();
} private void ee_Tapped(object sender, TappedRoutedEventArgs e)
{
to();
Storyboard.Begin();
} private void dd_Tapped(object sender, TappedRoutedEventArgs e)
{
to();
Storyboard.Begin();
} private void cc_Tapped(object sender, TappedRoutedEventArgs e)
{
to();
Storyboard.Begin();
} private void bb_Tapped(object sender, TappedRoutedEventArgs e)
{
to();
Storyboard.Begin();
} private void aa_Tapped(object sender, TappedRoutedEventArgs e)
{
to();
Storyboard.Begin();
}

收尾。

好吧小结一下,重点在布局和获取控件的相对坐标,通过表格定义同等宽度7列,从而达到不管在什么设备上多能平均分布,然后获取7个坐标进行位置移动就可以了,可以改变缓动函数以及参数实现一些有意思的动画,比如弹簧啊什么的,还可以叠加更多动画让它看上去不那么单调。

this.close();

uwp - 控件精确移动动画的更多相关文章

  1. WindowsXamlHost:在 WPF 中使用 UWP 控件库中的控件

    在 WindowsXamlHost:在 WPF 中使用 UWP 的控件(Windows Community Toolkit) 一文中,我们说到了在 WPF 中引入简单的 UWP 控件以及相关的注意事项 ...

  2. 使用 Microsoft.UI.Xaml 解决 UWP 控件和对老版本 Windows 10 的兼容性问题

    原文 使用 Microsoft.UI.Xaml 解决 UWP 控件和对老版本 Windows 10 的兼容性问题 虽然微软宣称 Windows 10 将是最后一个 Windows 版本,但由于年代跨越 ...

  3. Windows Community Toolkit 3.0 新功能 在WinForms 和 WPF 使用 UWP 控件

    本文告诉大家一个令人震惊的消息,Windows Community Toolkit 有一个大更新,现在的版本是 3.0 .最大的提升就是 WinForm 和 WPF 程序可以使用部分 UWP 控件. ...

  4. TimePicker控件、帧动画、补间动画

    1.TimePicker控件 最近感觉每个开发平台的控件基本都差不多,在Android中控件的事件和.net控件直接写事件有一定的区别,net事件可以直接界面进行事件的绑定哈.不过在Silverlig ...

  5. UWP控件与DataBind

    在uwp开发中必不可少的一个环节就是各种通用的控件的开发,所以在闲暇时间汇总了一下在uwp开发中控件的几种常用写法,以及属性的几种绑定方式,有可能不全面,请大家多多包涵 :) 1.先从win10新增的 ...

  6. Unity NGUI 描点控件的位移动画

           要让一个描点的控件动画移动到一个Position,能够用TweenPosition.可是这个仅仅能用在Position是固定的情况下.并且不能依据分辨率适配来进行移动. 以NGUI自带的 ...

  7. 自己定义控件三部曲之动画篇(七)——ObjectAnimator基本使用

    前言: 假如生活欺骗了你, 不要悲伤,不要心急! 忧郁的日子里须要镇静: 相信吧,快乐的日子终将会来临! 心儿永远向往着未来: 如今却常是忧郁. 一切都是瞬息,一切都将会过去: 而那过去了的,就会成为 ...

  8. 自己定义控件三部曲之动画篇(十三)——实现ListView Item进入动画

    前言:宝剑锋从磨砺出,梅花香自苦寒来 相关文章: <Android自己定义控件三部曲文章索引>: http://blog.csdn.net/harvic880925/article/det ...

  9. DevExpress Windows 10 v19.1新版亮点:UWP控件新功能全面解析

    行业领先的.NET界面控件DevExpress 日前正式发布v19.1版本,本站将以连载的形式介绍各版本新增内容.在本系列文章中将为大家介绍DevExpress WPF v19.1中新增的一些控件及部 ...

随机推荐

  1. [Angular] Implementing A General Communication Mechanism For Directive Interaction

    We have modal implement and now we want to implement close functionality. Becuase we use a structure ...

  2. Spring Cloud项目

    如何使用windows版Docker并在IntelliJ IDEA使用Docker运行Spring Cloud项目   如何使用windows版Docker并在IntelliJ IDEA使用Docke ...

  3. [Tools] Fix Only Committed Files with Prettier and lint-staged

    In this lesson we'll use prettier and lint-staged to run prettier only on files that have been chang ...

  4. 基于Maven,Spring+ActiveMQ实现,贴近实际

    本文只实现了Topic,queue改点配置就行了 一.pom依赖 Spring的太长了,具体可以看下面源码里面 <dependency> <groupId>org.apache ...

  5. 解决maven项目找不到maven依赖的解决办法

    不同的IDE对应的.classpath中的maven声明也不一样,这样就会导致项目找不到maven依赖. 即Java Build Path--->Libraries中找不到Maven Depen ...

  6. 黑马程序猿-assign、retain、release、nonatomic、atomic、strong、weak

    都是用于修饰@property声明的变量 assign:用于非oc对象类型,表示直接赋值(默认值) retain:用于mrc中,用于类属性中有oc对象的情况,表示先推断赋值的对象是否和实例对象变量的值 ...

  7. LOG4J中日志级别的使用

    <logger name="demo-log" additivity="false"> <level value="${log.le ...

  8. 【源代码】Timer和TimerTask源代码剖析

    Timer是java.util包中的一个工具类,提供了定时器的功能. 我们能够构造一个Timer对象,然后调用其schedule方法在某个特定的时间或者若干延时之后去运行一个特定的任务.甚至你能够让其 ...

  9. 日期和时间的格式化定义(ISO C89)

    格式化定义本质上控制的是占位. 日期 %Y:4位数的年份: %y:2位数的年份: %m:2位数的月份(1-12) %d:2位数的日(01-31) 时间 %H:24小时制(0-23) %I:12小时制( ...

  10. [Angular Directive] 1. Write an Angular Directive

    Angular 2 Directives allow you manipulate elements by adding custom behaviors through attributes. Th ...