Rebound源码分析
让动画不再僵硬:Facebook Rebound Android动画库介绍一文中介绍了rebound这个库。
对于想体验一下rebound的效果,又懒得clone和编译代码的,这里提供一个demo apk。
今天看到了tumblr发布了基于rebound的Backboard,本想直接分析一下Backboard对rebound做了些什么,不过考虑到rebound还没有仔细分析过,所以这里做一下源码分析。
对外部来说,首先接触的就是SpringSystem了,但在说它之前,先让我们看看Spring是什么。
Spring
Spring通过可设置的摩擦力(Friction)和张力(tension)实现了胡克定律,通过代码模拟了物理场景:
private static class PhysicsState {
double position;
double velocity;
}
private final PhysicsState mCurrentState = new PhysicsState();
private final PhysicsState mPreviousState = new PhysicsState();
private final PhysicsState mTempState = new PhysicsState();
private double mStartValue;
private double mEndValue;
每个spring从mStartValue到mEndValue进行运动,内部维护了当前状态、前值状态,以及临时状态,每个状态由通过位置和速度来描述,而运动的推进逻辑则在
void advance(double realDeltaTime)
advance方法中,SpringSystem会遍历由其管理的所有Spring实例,对它们进行advance。
SpringListener
每个Spring内部都维护着一个SpringListener数组,这也是我们经常会需要去实现的一个接口:
public interface SpringListener {
void onSpringUpdate(Spring spring);
void onSpringAtRest(Spring spring);
void onSpringActivate(Spring spring);

本文深入分析Facebook的Rebound库,探讨Spring、SpringListener、SpringSystem等核心组件的工作原理,展示如何利用这些组件创建流畅的弹性动画。Spring通过摩擦力和张力模拟物理运动,SpringListener监听动画状态变化,SpringSystem负责更新Spring实例。此外,还介绍了SpringChain用于创建连锁动画效果。通过对Rebound源码的解析,开发者能更好地理解和运用这个强大的动画库。
最低0.47元/天 解锁文章
1754

被折叠的 条评论
为什么被折叠?



