Android Dialog 打开动画,使用插值器Interpolator来实现回弹动画
starAnimation(getWindow().getDecorView()),getWindow().getDecorView()为dialog根View。
private void starAnimation(View view){
ObjectAnimator animatorX = ObjectAnimator.ofFloat(view,"scaleX",0.5f,1.0f);
ObjectAnimator animatorY = ObjectAnimator.ofFloat(view,"scaleY",0.5f,1.0f);
AnimatorSet set = new AnimatorSet();
set.setDuration(2000);
set.setInterpolator(new SpringScalingInterpolator(0.4f));
set.playTogether(animatorX,animatorY);
set.start();
}
playTogether为多个动画一起执行。SpringScalingInterpolator 为自定义Interpolator类。
public class SpringScalingInterpolator implements Interpolator {
//弹性因数
private float factor;
public SpringScalingInterpolator(float factor){
this.factor = factor;
}
@Override
public float getInterpolation(float input) {
return (float) (Math.pow(2, -10 * input) * Math.sin((input - factor / 4) * (2 * Math.PI) / factor) + 1);
}
}