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

Android ViewOverlay animate during remove() of Drawable

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

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

...稍后...

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

但是,这会立即从屏幕上删除我的可绘制对象。有没有办法淡出叠加层中的可绘制对象而不是立即将其删除?

您必须先将动画直接应用到 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();