Rebound是facebook推出的一个弹性动画开源动画库,可以让动画看起来真实自然,像真实世界的物理运动,带有力的效果。
官方地址:http://facebook.github.io/rebound
Android studio配置依赖
dependencies {
compile 'com.facebook.rebound:rebound:0.3.8'
}
基本用法:
使用默认参数
Rebound默认的拉力和摩擦力参数分别是40和7
spring.getCurrentValue()默认从0开始
img.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
//获取Spring对象
SpringSystem springSystem = SpringSystem.create();
Spring spring = springSystem.createSpring();
spring.setEndValue(1);
//动画更新
spring.addListener(new SimpleSpringListener() {
@Override
public void onSpringUpdate(Spring spring) {
float value = (float) spring.getCurrentValue();
img.setScaleX(value);
img.setScaleY(value);
}
});
}
return true;
}
});
效果:
自定义参数用法
new SpringConfig(80, 3)分别为弹力和阻力
spring.setCurrentValue(0.7)设置开始值
img.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
//获取Spring对象
SpringSystem springSystem = SpringSystem.create();
Spring spring = springSystem.createSpring();
//设置弹力和阻力
SpringConfig springConfig = new SpringConfig(80, 3);
spring.setSpringConfig(springConfig);
//设置开始值
spring.setCurrentValue(0.7);
//设置结束值
spring.setEndValue(1);
//动画更新
spring.addListener(new SimpleSpringListener() {
@Override
public void onSpringUpdate(Spring spring) {
float value = (float) spring.getCurrentValue();
img.setScaleX(value);
img.setScaleY(value);
}
});
}
return true;
}
});