Cela arrive malheureusement en raison de la manière dont les limites du ScrollView sont calculées. Il semble que les limites ne sont pas "tournées" avec la vue. Un travail consiste à prendre un instantané de chaque vue - à la fois l'avant et l'arrière de la carte - puis à animer entre ces instantanés au-dessus des vues réelles.
Le code ressemblerait à quelque chose comme ceci:
firstView.setDrawingCacheEnabled(true);
firstAnimationView.setBackgroundDrawable(new BitmapDrawable(firstView.getDrawingCache()));
secondView.setDrawingCacheEnabled(true);
secondAnimationView.setBackgroundDrawable(new BitmapDrawable(secondView.getDrawingCache()));
Animation flipOutAnimation = createFlipOutAnimation();
flipOutAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
firstAnimationView.setVisibility(View.GONE);
}
...
});
Animation flipInAnimation = createFlipInAnimation();
flipInAnimation.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationEnd(Animation animation) {
animationBackgroundView.setVisibility(View.GONE);
secondAnimationView.setVisibility(View.GONE);
}
...
});
firstAnimationView.startAnimation(flipOutAnimation);
secondAnimationView.startAnimation(flipInAnimation);
animationBackgroundView.setVisibility(View.VISIBLE);
firstAnimationView.setVisibility(View.VISIBLE);
secondAnimationView.setVisibility(View.VISIBLE);
Pour flip arrière animations compatibles, j'utilise http://genzeb.github.io/flip/