我有一个ViewOverlay用于在屏幕上显示Drawable。当我想在我的视图上添加或删除叠加可绘制时,我会执行以下操作:
ViewOverlay overlay = mView.getOverlay();
overlay.add(mDrawable);
......过了一段时间......
ViewOverlay overlay = mView.getOverlay();
overlay.remove(mDrawable);
然而,这会立即从屏幕上移除我的绘图。有没有办法淡化叠加中的可绘制而不是立即删除它?
答案 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();