原文: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. php ignore_user_abort()实现计划(定时执行)任务功能

    ? 1 2 3 4 5 6 7 8 9 10 11 12 <?php     ignore_user_abort(TRUE);  //关掉浏览器,PHP脚本也可以继续执行.     set_ti ...

  2. Vue.js组件的重要选项

    Vue.js组件的重要选项 实例化Vue对象一些很重要的选项,Vue的所有数据都是放在data里面的,Vue的参数是个对象,对象里面的字段叫做data,data里面也是对象,data也可以写作是thi ...

  3. 自己定义Dialog的具体步骤(实现自己定义样式一般原理)

    转载请标注转载http://blog.csdn.net/oqihaogongyuan/article/details/50958659 自己定义Dialog的具体步骤(实现自己定义样式一般原理)    ...

  4. Net知识

    Net知识图谱   对于Web系统开发来说,Net其实也是有好多知识点需要学的,虽然目前JAVA是主流,就业市场比较大,但Net也在积极的拥抱开源,大Net Core 2 出来了,这无疑给Net开发者 ...

  5. Linux中U盘和SD卡加载卸载命令

    U盘挂载命令U盘插入的时候会显示启动信息,启动信息中sda: sda1指U盘的设备名为sda1dev设备目录下有一个sda1设备文件,此设备文件就是我们插入的U盘,我们将这个设备文件挂载到Linux系 ...

  6. 计算机图形学(二)输出图元_3_画线算法_2_DDA算法

    DDA算法        数字微分分析仪(digital differential analyzer, DDA)方法是一种线段扫描转换算法.基于使用等式(3.4)或等式(3.5)计算的&x或& ...

  7. 王立平--eclipse本地配置svn

    1.下载 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQyNTUyNw==/font/5a6L5L2T/fontsize/400/fill/I ...

  8. 最简单的基于FFmpeg的移动端样例:IOS HelloWorld

    ===================================================== 最简单的基于FFmpeg的移动端样例系列文章列表: 最简单的基于FFmpeg的移动端样例:A ...

  9. tplink-如何远程WEB管理路由器?

    http://service.tp-link.com.cn/detail_article_185.html 如何远程WEB管理路由器? 新版tplink怎么远程Web管理? https://www.1 ...

  10. MouseGestureLahk

    http://cyber-furoshiki.com/win-mouse-gesture-l http://www.vector.co.jp/download/file/winnt/util/fh68 ...