看了大神总结的 Android 动画合集 并自己动手写了此demo,感觉还是有需要自己总结记录的地方
Android 5.0 (L 21)添加了揭露动画,无图无真相,先上效果图(录制的效果不太好,是那个意思)
演示1、简介
背景色扩散的效果,可以给任意的View添加这种效果。 当您显示或隐藏一组 UI 元素时,揭露动画可为用户提供视觉连续性;
揭露动画在系统中很常见,就是类似波纹的效果, 从某一个点向四周展开或者从四周向某一点聚合起来。
可以用在 Activity 里面的 View 动画效果,用来揭露某个隐藏 View 的显示;也可以使用在 Activity 跳转过渡动画中。(以上引用网上对 揭露动画的描述)
下面开始攻城狮最激动的爬坑路
2、使用 (此处可直接看开篇头部的大神文章)
使用揭露动画非常简单,Android Sdk 中已经帮我们提供了一个工具类 ViewAnimationUtils 来创建揭露动画。ViewAnimationUtils 里面只有一个静态方法 createCircularReveal(View view, int centerX, int centerY, float startRadius, float endRadius), 返回一个 Animator 动画对象。
ViewAnimationUtils.createCircularReveal() 方法能够为裁剪区域添加动画以揭露或隐藏视图,该方法有五个参数:
第一个参数是执行揭露动画的 View 视图
第二个参数是相对于视图 View 的坐标系,动画圆的中心的x坐标
第三个参数是相对于视图 View 的坐标系,动画圆的中心的y坐标
第四个参数是动画圆的起始半径,
第五个参数动画圆的结束半径。
通过对参数的描述很容易知道,我们要做的所有事情就是确定 ViewAnimationUtils.createCircularReveal() 这个方法的五个参数
以上面效果图为例第一个参数 就是 图片view,第二第三个参数分别是 第一个参数的宽度高度的一半(即:图片view 的中心),
第四第五个参数 图片view 的对角线长度此处需注意以下两点:
(1)以中心点为轴点,当开始半径小于结束半径时,从开始半径处向外扩大到结束半径处显示View
(2)以中心点为轴点,当开始半径大于结束半径时,从开始半径处向内缩小到结束半径处隐藏View
3、使用总结
严格按照以上第二点 里加黑地方的说明使用 揭露动画,就基本没什么问题了;
在自己看来还是有两点需要记录一下,当然经过测试都是可以自己测试出来的,所以简单记录如下:
(1)显示揭露对象时并不是在动画监听方法的 onAnimationEnd 里 进行的。(直接引用大神的总结)
首先揭露对象要先于动画开始前显示,因为如果动画开始时,要揭露的对象处于隐藏状态,那么动画就不会有效果,因为隐藏状态是看不到效果的。
所以是不能 在动画结束的回调里才设置 View VISIBLE,这时动画已经结束了不会看到任何效果了。
另一方面,为什么不在动画开始的回调方法里设置 View.VISIBLE ,在这里调用也是可以的,一般这样设置也不会有任何问题。
但我们在前面就说过揭露动画 是一个异步动画,它的回调方法都不能保证在准确的时间里调用(可能延迟调用,虽然很短),
所以我们建议直接在调用动画开始方法 start() 直接设置 View.VISIBLE 为好
网友评论