平滑且连续地动画对象的比例显示闪烁

时间:2016-10-27 17:17:54

标签: android animation

我有一个以固定速率调用的方法(updateValue)(例如:300ms)。我需要改变视图的比例(在0.1 - 1.0之间),这意味着我需要连续开始动画

我是按照以下方式做的

public static void updateScale(final View view, Double newValue) {
    if (dB == null) {
        dB = MAX_DB;
    }

    float to = (float) (newValue / MAX_VALUE);
    long time = 500;


    if (to > 1f) {
        to = 1f;
    }

    Animation anim = (Animation) view.getTag(R.string.anim_tag);
    Object animScale = view.getTag(R.string.anim_scale);

    final float from = animScale == null ? 1f : (float)animScale;


    float diff = Math.abs(from - to);

    if (diff < 0.00001) {
        Log.d(BuildConfig.TAG, "Skip no animation");
        return;
    }

    if (anim == null || anim.hasEnded()) {
        anim = new ScaleAnimation(1f, 1f, from, to);
        anim.setDuration(time);
        anim.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
                view.setScaleY(from);
            }

            @Override
            public void onAnimationEnd(Animation animation) {

            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });
        view.setTag(R.string.anim_tag, anim);
        view.setTag(R.string.anim_scale, to);
        view.startAnimation(anim);
    } else {
        view.setTag(R.string.anim_scale, to);
    }
}

动画看起来很流畅,但有点像闪烁。我尝试过不同的方式,也是出于某些原因我需要在动画结束或开始时设置比例,以便在视图上保持更改

0 个答案:

没有答案