[UWP小白日记-6]页面跳转过度动画
前言
在学习中发现页面导航默认是没有过度动画的,直接就导航过去太粗暴了( ̄へ ̄),于是打算上动画结果不言而喻自己进了坑完全不懂动画,然后就是各种疯狂(´・_・`)的搜索资料看了后终于有点头绪.
再后来发现,页面进入和出去动画是OK了,But 为毛导航在执行动画的时候背景不是前一个页面,而是系统的Light主题和Dark主题的颜色 (゚Д゚≡゚д゚)!? 查资料中……
扯完了蛋╮( ̄▽ ̄)╭
正文
想想的是这样的

结果是这样的:

这是要逼死强迫症吗(ノಠ益ಠ)ノ彡┻━┻
tips :其实巨硬已经定义了一些动画,偷懒的就直接用
巨硬定义的一些动画:
EntranceThemeTransition 可以控制水平和垂直移动的距离.
<Page.Transitions>
<TransitionCollection>
<EntranceThemeTransition FromHorizontalOffset="-1000"
FromVerticalOffset="" />
</TransitionCollection>
</Page.Transitions>
EntranceThemeTransition
下面这种导航过度动画,可以查看下这位同学的@h82258652博客
<Page.Transitions>
<TransitionCollection>
<NavigationThemeTransition>
<NavigationThemeTransition.DefaultNavigationTransitionInfo>
<CommonNavigationTransitionInfo />
</NavigationThemeTransition.DefaultNavigationTransitionInfo>
</NavigationThemeTransition>
</TransitionCollection>
</Page.Transitions>-->
CommonNavigationTransitionInfo
当然,作为萌新,用来学习当然不能偷懒.
<Page.Resources>
<Storyboard x:Name="stataStoryboard">
<DoubleAnimation Storyboard.TargetName="tablepage"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)"
From=""
To=""
Duration="0:0:0.6"> </DoubleAnimation>
</Storyboard><!--Completed="overStoryboard_Completed"-->
<Storyboard x:Name="overStoryboard" >
<DoubleAnimation Storyboard.TargetName="tablepage"
Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.X)"
From=""
To=""
Duration="0:0:0.6"> </DoubleAnimation>
</Storyboard>
</Page.Resources>
定义动画
动画是改变RenderTransform.TranslateTransform的X的值,所以还的给Page添加一个TranslateTransform.
动画里为什么没有
EnableDependentAnimation="True"
是否依赖UI线程
也可以运行?
应为UWP动画执行有2个线程:
1.UI线程:直接用动画修改控件本身的属性那么必须把此值设置为true;
2.构图线程:优点 大法新搞的据说性能更好,不阻塞UI.恩满满的优点啊.(亦可以说是后台线程)
so,以后动画尽量用RenderTransform
<Page.RenderTransform>
<TranslateTransform/>
</Page.RenderTransform>
TranslateTransform
导航
接下来使用Page导航中会触发的几个事件:OnNavigateTo,OnNavigateFrom ,没错就是这样,总感觉有什么不对呢
进入page2的时候触发OnNavigateTo,然后在page2里重写.
protected override void OnNavigatedTo(NavigationEventArgs e)
{
Storyboard tempStorboard = Resources["stataStoryboard"] as Storyboard;
tempStorboard.Begin(); base.OnNavigatedTo(e);
}
Page2

接下来离开当前页面的时候触发OnNavigateFrom ,接着重写它.
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
Storyboard tempStorboard1 = Resources["overStoryboard"] as Storyboard;
tempStorboard1.Begin(); base.OnNavigatedFrom(e);
}
理想是丰满的,显示是骨感的,完全不执行动画,这是什么鬼.最后搞来搞去才知道,OnNavigateFrom 根本不会等你执行动画直接就跳走了,完全不甩你就是这么傲娇.
最后是这样的:在后退按钮事件中等overStoryboard动画执行完后出发它的Completed事件,再进行导航.
if (this.Frame.CanGoBack)
{
Storyboard tempStorboard1 = Resources["overStoryboard"] as Storyboard;
tempStorboard1.Begin();
}
后退按钮事件
private void overStoryboard_Completed(object sender, object e)
{
this.Frame.GoBack();
}
Completed
处理出现的Light和Dark主题背景色
代码修改如下,暂时还没发现大问题,如果有朋友发现请给我留言,学习!
/// <summary>
/// 后退导航
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void TablePageGoBackButton_Click(object sender, RoutedEventArgs e)
{
if (this.Frame.CanGoBack)
{
Storyboard tempStorboard1 = Resources["overStoryboard"] as Storyboard;
tempStorboard1.Begin();
}
else
{
Storyboard tempStorboard1 = Resources["overStoryboard"] as Storyboard;
tempStorboard1.Begin();
}
}
后退按钮事件
/// <summary>
/// overStoryboard动画执行完毕后触发
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void overStoryboard_Completed(object sender, object e)
{
if (Frame.BackStackDepth!=)
{
this.Frame.GoBack();
}
else
{
Frame.BackStack.Clear(); //清空导航记录
Frame.Visibility = Visibility.Collapsed;
} }
Completd

最后的疑问,怎么在2个Frame间传递数据,
当从系统的rootFrame切换到childrenFrame的时候,
怎么保存rootFrame的状态,让再次切回时还原rootFrame的状态
请知道的大神指点迷津.再次感激不尽!
[UWP小白日记-6]页面跳转过度动画的更多相关文章
- [UWP小白日记-9]页面跳转过度动画(二)
又打算动手写了 [UWP小白日记-6]页面跳转过度动画 上次写的,这次随着学习的进度使用新的玩法. 最近在搞GIT的学习,结果把好好的项目玩坏,都不知道当时是怎么想的拿在写的APP来玩GIT,害我重写 ...
- [UWP小白日记-3]记账项目-1
学了一段时间的UWP,来个项目试试手. 本来是想边做边学MVVMLight的结果感觉MVVM对于萌新来说太高难,以后再把这个项目改造成MVVMLight框架的项目. 下面进入正题. 中间那快空白打算放 ...
- [UWP小白日记-11]在UWP中使用Entity Framework Core(Entity Framework 7)操作SQLite数据库(一)
前言 本文中,您将创建一个通用应用程序(UWP),使用Entity Framework Core(Entity Framework 7)框架在SQLite数据库上执行基本的数据访问. 准备: Enti ...
- [UWP小白日记-7]转换MVA学院的XML字幕为SRT (二)
瞎扯淡 上个版本,非常蠢用来N多的循环导致非常卡性能烂得不行,这次使用XmlDocument类来读取XML字幕 其实根本不用各种扒XML字幕,好吧我这是学习使用XmlDocument类,嗯就是这个样子 ...
- [UWP小白日记-15]在UWP手机端实时限制Textbox的输入
说实话重来没想到验证输入是如此的苦逼的一件事情. 网上好多验证都是在输入完成后再验证,我的想法是在输入的时候就限制输入,这样我就不用再写代码来验证了 应为是手机端,所以不用判断其他非法字符,直 ...
- [UWP小白日记-8]一些零碎的东西
设置启动窗口大小 直接上代码了没什么好解释的了,既然能设置最小,那铁定就能设置最大 public MainPage() { //设定窗口启动显示大小 ApplicationView.Preferred ...
- [UWP小白日记-12]使用新的Composition API来实现控件的阴影
前言 看了好久官方的Windows UI Dev Labs示例好久才有点心得,真是头大.(其实是英语幼儿园水平(⊙﹏⊙)b) 真的网上关于这个API的资料可以说几乎没有. 正文 首先用这东西的添加WI ...
- [UWP小白日记-10]程序启动屏(ios解锁既视感)
讲一下 微软爸爸的开发者大会2016又暴了个表达式动画和Windows.UI.Composition的API,好叼的样子. 官方示例库GitHub 目前是懵逼状态,好复杂.脑细胞已经在地府排队了. ( ...
- [UWP小白日记-5]转换MVA学院的XML字幕为SRT
开源地址:第二版开源地址GIT 暂时用不了了,在最新的WIN10 10586.494系统上回闪退,正在酝酿第二版 O(∩_∩)O哈哈~ 新版已经完工:第二版 地方MVA上好多教程,但是微软的所有中国网 ...
随机推荐
- js call方法
js call call 方法 请参阅 应用于:Function 对象 要求 版本 5.5 调用一个对象的一个方法,以另一个对象替换当前对象. call([thisObj[,arg1[, arg2[, ...
- 记录下关于SQL Server的东西
CTE之所以与其他表表达式不同,是因为它支持递归查询: 定义一个递归CTE,至少需要两个查询(或者更多),第一个查询称为定位点成员(anchor member),第二个查询称为递归成员(recursi ...
- JavaScript面向对象编程(二)构造函数和类
new关键字和构造函数 在文章JavaScript面向对象编程(一)原型与继承中讨论啦JavaScript中原型的概念,并且提到了new关键字和构造函数.利用new关键字构造对象的实例代码如下: // ...
- poj1173 解题报告
poj1173 解题报告2013-07-21 13:31 by 期待 ., 42 阅读, 0 评论, 收藏, 编辑 http://poj.org/problem?id=1173 发现此题资料甚少,斗胆 ...
- 开始使用THREE.JS
开始使用THREE.JS 译序 Three.js是一个伟大的开源WebGL库,WebGL允许JavaScript操作GPU,在浏览器端实现真正意义的3D.但是目前这项技术还处在发展阶段,资料极为匮乏, ...
- 成都传智播客JDBC视频及讲师介绍
成都传智播客java讲师,也许,你跟他很熟,你或者听过他的课,或者跟他争论过什么,又或者你们在一起共事,再者你们只是偶尔擦肩而过.在小编的印象中郭老师完全没有架子,和他相处会让你觉得不是面对一个老师, ...
- hdu 1728 搜索求最少的转向次数
逃离迷宫 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 设置,获取和删除Cookies
#region 保存用户名的Cookie /// <summary> /// 设置Cookie /// </summary> /// <param name=" ...
- Android开发(22)--seekBar采用handler消息处理操作
本案例简单实现进度条可走,可拖拽的功能,下面请看源码: 布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/ ...
- 使用多个DNS供应商以缓解DDoS攻击
随着不安全物联网(IoT)设备的激增,针对域名系统(DNS)供应商的分布式拒绝服务(DDoS)攻击在数量和规模上正在不断增加.这些攻击随之影响依赖于这些供应商进行域名解析的网站.虽然DNS供应 ...