该动画效果灵感来源于《复仇者联盟3》里灭霸打完响指之后,复仇者们消失的场景。
下面看下我们自己实现的效果:
这里不是只对ImageView做了动画,而是对包含ImageView的父view做动画。
该动画可用在绝大部分view和viewgroup上,上面的例子就是对Recyclerview
中的Item做了动画。
已经将该动画效果开源到了Github,并且可以通过gradle直接引用。
使用方法
导入依赖
在根目录的build.gradle
文件下添加:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
在app目录的build.gradle
文件下添加:
dependencies {
implementation 'com.github.Brooks0129:ThanosSnap:v1.0'
}
调用
Kotlin调用:
val disappearView = DisappearView.attach(activity)
disappearView.execute(view,
duration = 4000,
interpolator = AccelerateInterpolator(0.5f),
needDisappear = true)
DisappearView.attach(activity)
里应该传递一个activity实例。
调用disappearView.execute
表示开始执行动画,下面解释各个参数的含义。
- view,表示需要执行动画的view,可以是单个的view,也可以是viewgroup,没有限制
- duration,表示动画执行的时间,可以不填,默认是4m
- interpolator,动画插值器,可以不填,默认是
AccelerateInterpolator(0.5f)
- needDisappear,表示执行动画的时候,原view是否要消失,可以不填,默认消失
如果是java调用,可以选择相应的重载方法。
原理分析
首先获取要做动画的view的截图。
private fun createBitmapFromView(view: View