原文链接 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

一个我的项目的合集。

原创不易,打赏点赞在看珍藏分享 总要有一个吧