在Drawable的remove()期间,Android ViewOverlay动画

时间:2015-12-10 22:59:19

标签: android android-animation android-drawable

我有一个ViewOverlay用于在屏幕上显示Drawable。当我想在我的视图上添加或删除叠加可绘制时,我会执行以下操作:

ViewOverlay overlay = mView.getOverlay();
overlay.add(mDrawable);

......过了一段时间......

ViewOverlay overlay = mView.getOverlay();
overlay.remove(mDrawable);

然而,这会立即从屏幕上移除我的绘图。有没有办法淡化叠加中的可绘制而不是立即删除它?

1 个答案:

答案 0 :(得分:0)

您必须先将动画直接应用于Drawable,动画完成后,您可以致电remove()删除叠加层。

ValueAnimator animator = ValueAnimator.ofInt(255, 0);
animator.setInterpolator(new LinearInterpolator());
animator.setDuration(ANIMATION_DURATION);
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
        int alpha = (int) animation.getAnimatedValue();
        mDrawable.setAlpha(alpha);
        mViewThatHasOverlay.invalidate();
    }
});
animator.addListener(new AnimatorListenerAdapter() {
    @Override
    public void onAnimationEnd(Animator animation) {
        ViewOverlay overlay = mViewThatHasOverlay.getOverlay();
        overlay.remove(mDrawable);
    }
});
animator.start();