原文链接 Android Animation Advanced Tricks
后面的文章介绍了动画的根本应用办法,本文来聊一聊波及到动画的高级技巧,以及一些十分优质的学习资源和动画三方库和框架。
页面之间的过渡动画
惯例的动画都是针对某一页面上的某个元素做动画,这个绝对简略,之前的文章讲了很多。但有时候页面与页面之间也是须要过渡动画的,这个能够增强切换的视觉体验,但最好要留神整个利用内的格调对立,不能A到B是一种切换款式,B到C却是另外一种。
次要有两类,一是Activity之间的切换,二是布局之间的切换。
Activity之间的切换动画
因为Activity的创立与启动以及它的Window的创立和显示都是由Frameworks来管制的,甚至于Activity外面的布局何时加载也是由零碎决定的,所以对于Activity之间的切换重大依赖于Frameworks,而不同版本的安卓,反对的状况还不一样。
传统的做法
这个是针对 于所有安卓 版本都能够应用的办法,也是最简略的形式,就是应用Activity#overridePendingTransition办法。
这个办法并不难,具体如何应用能够参考其文档,以及这篇文章,讲的都比较清楚。
应用Transition
在Android 4.4时,零碎中退出了一个叫做Transition的货色,专门用于页面之间的切换的,但也仅是限于同一个窗口(也即同一个Activity内)的ViewGroup。在Android 5.0时又把Activity之间的切换提供了反对,对于5.0以上的版本能够应用这个框架来实现切换,会比传统的做法都要业余一些。
具体能够参看官网教程,以及这篇教程和这篇文章,解说的都相当好。
布局之间的过渡切换
这里的布局就是指除Activity以外的,比方从一个ViewGroup切换到另外一个ViewGroup。其实Fragment实质上就是一个ViewGroup,所以也蕴含在内。
在Android 4.4 (Kikat API 19),退出了Transition frameworks,专门用于解决场景切换,次要是通过Scene对象和Transition对象。Transition对象定义具体针对 哪个ViewGroup做什么样的动画,而Scene对象定义了ViewGroup的某一种状态,如突变进入,那么突变前是一个Scene,齐全可见后又是一个Scene,而突变的过程则叫Transition。
能够参看官网文档,以具体理解如何应用transition。
简单动画的实现逻辑
动画是一个非常复杂且精湛的畛域,千万不要说做个UI很容易,或者说写个动画很容易,要想做好动画须要很深的功底,岂但须要对动画框架有深刻的理解,也要对整个视觉GUI有深刻的了解,并且须要良好的数学与物理常识。
简单的动画的复杂度体现在两个方面,一个是整体上看起来简单,也就是是很多不同的动画的组合;另外一个是具体的某个属性简单,如简单的门路,简单的工夫变动或者简单的形变。离开说。
看起来简单的动画
这个别是波及泛滥的动画的组合,整体体现上看起来特地简单。就比如说电商可能会有一个购物筐,外面往外飞各种商品的动画。对于这种就是要把它拆解,拆解开来后,其实并不简单。
- 购物车:能够是突变,一直的从通明变到不通明。或者罗唆不做动画
- 商品:预约义一组商品,每次随机抉择一个,再抉择随机的地位,而后从底下往上飞(或者从上往下飞),再设置一个随机的速度,也能够加上旋转
这样拆解开来就不简单了。
简单的变幻
这里就要波及一些数学 和物理常识了,比方用一些特地的曲线,非凡的曲面,非凡的形变等。
优良的动画的设计范例
这里就不得不得提到小名顶顶的Dribbble了,这里有相当优良的设计资源,其中也有很多动画设计,能够尝试着去实现一下,都很有挑战。
优良的动画相干资源
还有一些资源,特地是开源的库,也十分值得学习和钻研和应用。
MotionLayout
这个并不是三方的,而是官网AndroidX中的,相当的弱小,当然应用起来也略简单。具体应用办法能够参考 官网教程和这篇文章。
The Top 27 Android Animation Open Source Projects
这里是一个汇合,外面列出一些优良的动画相干的开源库,都相当的棒。
Android View Animations
有一些针对View的十分炫酷的特效,如抖动,缩放和旋转等。它是受一个水果下面的动画库的激发。
Material-Animations
次要是介绍如何应用Transition frameworks的。
Lottie
能够把设计软件Adobe After Effects间接转成动画。
一些插值器
可看这个和这个
专门用于加载动画
外面有各种神奇的加载特效,十分棒。是一个前端CSS加载特效的Android上的实现。
教程的示例
这是一个教程集锦,外面也蕴含各种示例,是一个相当不错的学习资源。
另外一个教程和示例
与下面的相似,也是一个集教程与实例在一起的我的项目。
Android Animation Detailed Tutorials
一个我的项目的合集。