package com.ufreedom.uikit.effect; import com.facebook.rebound.Spring; import com.facebook.rebound.SpringConfig; import com.facebook.rebound.SpringSystem; import com.facebook.rebound.SpringUtil; import com.ufreedom.uikit.FloatingAnimator; /** * Author UFreedom */ public abstract class ReboundFloatingAnimator implements FloatingAnimator { protected SpringSystem springSystem; public ReboundFloatingAnimator() { springSystem = SpringSystem.create(); } public Spring createSpringByBouncinessAndSpeed(double bounciness, double speed) { return springSystem.createSpring() .setSpringConfig(SpringConfig.fromBouncinessAndSpeed(bounciness, speed)); } public Spring createSpringByTensionAndFriction(double bounciness, double speed) { return springSystem.createSpring() .setSpringConfig(SpringConfig.fromOrigamiTensionAndFriction(bounciness, speed)); } protected float transition(float progress, float startValue, float endValue) { return (float) SpringUtil.mapValueFromRangeToRange(progress, 0, 1, startValue, endValue); } }