概述
今天开发遇到一个视觉需求,翻转一个logo用来强调入口,好吧,反正设计是就是喜欢炫的东西,作为开发来说,没的选咯,在google了一番以后,发现android developer官网有一个页面的切换动画,https://developer.android.com/training/animation/cardflip.html,好像有点意思,于是模仿者来了一发,做了一个FlipView。
无图无真相,把结果发出来再BB吧。
实现原理
其实主要是四个切换动画,两个用于顺时针翻转, 两个用于逆时针翻转。虽然我不喜欢贴代码,但是好像代码更加能说明哈,毕竟程序员都很聪明的。
在main/res/animator目录夹下面心间四个xml
首先是顺时针进入动画anim_in.xml
顺时针出动画anim_out.xml
然后是逆时针进入动画anim_in_reverse.xml
逆时针出动画anim_out_reverse.xml
代码拷贝完了,简单的来解释下吧,就拿顺时针的两个动画来看就行了,其实主要的就是将前面的一面进行rotationY旋转,然后在旋转到一半的时候进行隐藏,后面的一面刚好相反,先进行隐藏,然后反向旋转着出现。
AbstractFlipView
考虑到前后两面会有不同的界面,不仅仅是简单的ImageView,那么决定写个抽象类好了,让继承者提供给我们两个翻转的类。
然后将其加到两个容器中去,布局如下:
核心的代码其实就是加载好动画,然后执行,下一次执行必须在上一次动画结束后才行。以顺时针为例:
好了,核心代码到此就结束了。
继承自AbstractView写一个例子
主要实现几个基本的接口:
以上就是一个例子。好了,在github上有我的一个简单的例子,大家可以参考下,笔者水平有限,大家凑合着看吧,github地址为:https://github.com/gordon-rawe/FlipView