我有一张卡片游戏,其中人选择卡片并拖动(通过翻译动画完成),然后当放手时它移动到屏幕中心,那里有一个 imageView 占位符。在动画结束时,我将图像视图设置为该卡,并且可以在屏幕上的每个视图上无效。我不明白的是,当我调用无效时,卡片看起来像是留下了一些痕迹(来自翻译动画的阴影)。当我调用 postInvalidate 时,它会正确绘制。这是为什么??
动画结束代码:
@Override
public void onAnimationEnd(Animation arg0) {
if(card == null){
MyApplication.SWERR(null);
busy = false;
}
card.getCardImage().setVisibility(View.INVISIBLE);
Drawable drawable = card.getCardSuitNumber().getDrawable(mContext);
finalDestIV.setBackgroundDrawable(drawable);
finalDestIV.setVisibility(View.VISIBLE);
invalidateAll();
PlayerStatus p = mGameMonitor.getPlayerStatusFromPlayerEnum(GameConstants.PLAYERS.P1);
p.handleCardChosen(card);
cardReleased = false;
p.setPlayerLock(false);
card = null;
}
InvalidateAll 方法
private void invalidateAll(){
rootLayout.postInvalidate();
for (int i=0; i<rootLayout.getChildCount();i++){
View v = rootLayout.getChildAt(i);
v.postInvalidate();
}
}