Android  Dialog 打开动画,使用插值器Interpolator来实现回弹动画

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);
    }
}

 


版权声明:本文为ls1390520原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。