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();
我有一个 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();